ios - 如何在自定义初始化程序中快速返回 nil?

标签 ios swift convenience-methods

我正在尝试用 swift 编写自定义初始化程序。 我有这样的东西:

convenience init(datasource:SomeProtocol) {
    assert(datasource != nil, "Invalid datasource")
    if(datasource == nil) {
        return nil
    }
    self.init()
}

“return nil”行给我这个错误:“找不到接受提供的参数的‘__conversion’的重载”

所以,我想要完成的就是让这个方便的初始化器在调用者没有提供有效数据源时返回 nil。

我在这里做错了什么?

谢谢

最佳答案

更新:从 Xcode 6.1 beta 1 开始 (available in the Mac Dev Center) , Swift 初始化器可以声明为返回一个可选的:

convenience init?(datasource:SomeProtocol) {
    if datasource == nil {
        return nil
    }
    self.init()
}

或隐式展开的可选:

convenience init!(datasource:SomeProtocol) {
    if datasource == nil {
        return nil
    }
    self.init()
}

关于ios - 如何在自定义初始化程序中快速返回 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189965/

相关文章:

objective-c - 关于 Objective C,便利方法的定义是什么?

ios - 将 NSDictionary 值转换为 NSString

ios - 带子节点的SKSpriteNode的触摸检测

ios - 打字时缩小 BackSpace 上的 UITextField 范围

ios - 找出 UIWebView 标题何时更改?

ios - Swift:从 View 中获取值(value)的最佳方式

ios - Swift:如何为不带参数的 UIAlertController 创建一个方便的 init

python - 如何将 NumPy 数组标准化到一定范围内?

ios - Swift - Locksmith loadDataForUserAccount 有时会失败?

javascript - 在 Javascript 中检测 Ipad Iphone 上的隐藏键盘按钮