Swift 2.0:初始化CBCharacteristic?
Swift 2.0: Initialize a CBCharacteristic?
我正在使用 CoreBluetooth 框架制作一个应用程序,我最近将它移植到 swift 2.0。在我的代码中,我有一个全局变量,它是一个 CBCharacteristic,在 swift 1.2 中我可以这样做:
var bob:CBCharacteristic = CBCharacteristic()
但是现在它给我的错误是CBCharacteristic的init()函数被显式隐藏了,所以我不能初始化它。有什么办法可以解决这个问题吗?
CBCharacteristic
的实例只能通过服务发现过程检索。
在你的 Swift 1.2 代码中你分配了一个 'empty' CBCharacteristic
只是为了满足编译器关于未初始化变量的要求,但是你会有 运行 时间问题是您在分配 'real' CBCharacteristic
.
之前尝试使用 bob
Swift 旨在更轻松地生成 "safe" 代码,这些代码不会因类型的不正确使用而出现微妙的 运行 时间问题。直接实例化 CBCharacteristic
的实例是没有意义的,在 Swift 2.0 中你被主动阻止这样做。
如果您的 CBCharacteristic
是 属性 那么它应该被声明为可选的,因为在发现特征之前它可能没有值
var bob:CBCharacteristic?
或者,如果您确定您的代码在设置之前不会尝试访问 bob
-
var bob:CBCharacteristic!
第一个将确保您在使用它之前编写代码来解包可选,第二个将在设置之前使用它时给出 运行-time 错误 - 这两者都比可能难以调试的问题,你可能只是引用了一个 'empty' CBCharacteristic
我正在使用 CoreBluetooth 框架制作一个应用程序,我最近将它移植到 swift 2.0。在我的代码中,我有一个全局变量,它是一个 CBCharacteristic,在 swift 1.2 中我可以这样做:
var bob:CBCharacteristic = CBCharacteristic()
但是现在它给我的错误是CBCharacteristic的init()函数被显式隐藏了,所以我不能初始化它。有什么办法可以解决这个问题吗?
CBCharacteristic
的实例只能通过服务发现过程检索。
在你的 Swift 1.2 代码中你分配了一个 'empty' CBCharacteristic
只是为了满足编译器关于未初始化变量的要求,但是你会有 运行 时间问题是您在分配 'real' CBCharacteristic
.
bob
Swift 旨在更轻松地生成 "safe" 代码,这些代码不会因类型的不正确使用而出现微妙的 运行 时间问题。直接实例化 CBCharacteristic
的实例是没有意义的,在 Swift 2.0 中你被主动阻止这样做。
如果您的 CBCharacteristic
是 属性 那么它应该被声明为可选的,因为在发现特征之前它可能没有值
var bob:CBCharacteristic?
或者,如果您确定您的代码在设置之前不会尝试访问 bob
-
var bob:CBCharacteristic!
第一个将确保您在使用它之前编写代码来解包可选,第二个将在设置之前使用它时给出 运行-time 错误 - 这两者都比可能难以调试的问题,你可能只是引用了一个 'empty' CBCharacteristic