initWithSomething
bir Objective-C tarzı olduğunu ve tam olarak böyle gitmez Swift'de.
Swift'de, tüm başlatıcılar init
olarak adlandırılır ve isteğe bağlı olarak bazı parametreler alabilir.
Böyle varsayılan değerleri kullanabilirsiniz: Eğer ikinci init
yöntemini tanıtmak kez nedeniyle
class Example {
var aVar: String
init(goodVar : String = "Good Var!") {
aVar = goodVar
}
}
let example1 = Example()
println(example1.aVar) // prints "Good Var!"
Ancak bu yaklaşım, sizin örnekte olduğu gibi tam olarak çalışmaz, bu istedik hangi Belirsiz:
class Example {
enum ExampleType : String {
case GoodVar = "Good Var!"
case FooBar = "Foo Bar"
}
var aVar: String
init(type : ExampleType) {
aVar = type.rawValue
}
}
let example1 = Example(type: .GoodVar)
println(example1.aVar) // "Good Var!"
let example2 = Example(type: .FooBar)
println(example2.aVar) // "Foo Bar"
0:
class Example {
var aVar: String
init(goodVar : String = "Good Var!") {
aVar = goodVar
}
init(fooBar : String = "Foo Bar") {
aVar = fooBar
}
}
let example1 = Example() // error: cannot invoke initializer…
daha iyi bir yaklaşım Swift adlı enum
kullanmak olabilir
Bu yaklaşım, normal Swift sözdizimini kullanarak istediğiniz esnekliği sağlayacaktır.
Belki de "kolaylık init" bir göz atın: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/ TP40014097-CH18-ID215 – grominet