我有一个管理一组数据的单例。如果由于某种原因数据不可用,我希望通过抛出异常来创建单例失败。编译器不是用throws
标记getter的粉丝。注意:我意识到我可以处理其他方式,但现在我很好奇,如果它甚至可能。
class Foo {
class var `default`: Foo {
let instance = Foo()
return instance
}
private init() throws {
// Throw if unable to load required data...
}
}
答案 0 :(得分:1)
你可以这样做(来自我的游乐场的代码),你的单身人士的每次调用都必须通过尝试完成。
enum FooError : Error {
case RuntimeError(String)
}
class Foo {
static func defaultFoo() throws -> Foo {
if let instance = Foo("Success") {
return instance
} else {
throw FooError.RuntimeError("Singleton is not created")
}
}
private init?(_ parameter: String?) {
if let _ = parameter {
print("Init Succeded")
} else {
print("Init failed")
return nil;
}
}
}
try Foo.defaultFoo()