Swift 2.0:初始化CBC特性?

时间:2015-08-11 18:26:03

标签: ios swift core-bluetooth swift2

我正在使用CoreBluetooth框架制作应用程序,我最近将其移植到swift 2.0。在我的代码中,我有一个全局变量,它是一个CBC特性,在swift 1.2中我可以做到:

var bob:CBCharacteristic = CBCharacteristic()

但是现在它给了我一个错误,即CBCharacteristic的init()函数已被明确隐藏,所以我无法初始化它。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:3)

CBCharacteristic的实例只能通过服务发现过程检索。

在你的Swift 1.2代码中,你分配了一个空的' CBCharacteristic只是为了满足编译器关于未初始化变量的要求,但如果您在分配“真实”变量之前尝试使用bob,则会遇到运行时问题。 CBCharacteristic

Swift旨在使其更容易生产"安全"代码不正确使用类型不会产生细微的运行时问题。直接实例化CBCharacteristic的实例是没有意义的,并且在Swift 2.0中你被积极地阻止这样做。

如果您的CBCharacteristic是属性,则应将其声明为可选项,因为在发现此特征之前它可能没有值

var bob:CBCharacteristic?

或者,如果您确定您的代码在设置之前未尝试访问bob -

var bob:CBCharacteristic!

第一个将确保您在使用之前编写代码来解包可选项,如果在设置之前使用它,则第二个将提供运行时错误 - 这两个都优于可能难以调试的问题你会简单地引用一个空的' CBCharacteristic