class FailInit {
var name : String?
init?( name: String){
if name.isEmpty {
return nil //available in failure init methods
}
self.name = name
}
func desc() {
print("name is \(self.name!)")
}
}
var f = FailInit(name:"kim")
f!.desc()
var m = FailInit(name:"") //init failed
if m == nil {
print("nil found")
}
/*
name is kim
nil found
*/
2017년 8월 21일 월요일
Failable Init
convenience vs designated init
Calling self init method can be available in convenience init method, not in designated init method
class Vehicle {
var numberOfWheels = 0
var name : String = ""
init(numberOfWheels:Int){
self.numberOfWheels = numberOfWheels
}
convenience init(name:String , wheels:Int){
self.init(numberOfWheels: wheels)
self.name = name
}
init(name:String , wheels:Int){ // ERROR : designated init can't call self init
self.init(numberOfWheels: wheels)
self.name = name
}
func desc() {
print("\(name) has \(numberOfWheels)")
}
피드 구독하기:
글 (Atom)