雖然使用CoreBluetooth框架將設備設置爲外圍管理器,但我遇到了Swift如何處理枚舉的困難。Swift枚舉和CBCharacteristic屬性
具體而言,CBMutableCharacteristic初始化需要一個enum
爲properties
論點:
init!(type UUID: CBUUID!, properties: CBCharacteristicProperties, value: NSData!, permissions: CBAttributePermissions)
CBCharacteristicProperties
是Int
-backed枚舉。如果使用ObjectiveC,則初始化程序將通過使用按位OR OR |
運算符接受properties
的多個值。在斯威夫特的enum
不直接允許使用按位OR,但可以在rawValues
執行它那回的案件:
let properties = CBCharacteristicProperties.Read.rawValue | CBCharacteristicProperties.Notify.rawValue
現在,properties
是Int
型的,這意味着它可以不是傳遞給上述初始化程序。 ('Int' is not convertible to 'CBCharactersiticProperties'
)。因此,我試圖從「原始」值創建枚舉的一個實例:
let cbProperties = CBCharacteristicProperties(rawValue: properties)
然而,在運行時該解析爲nil
。由按位OR產生的Int
與enum
中的任何一個都不匹配。將nil
的properties
參數傳遞給初始值設定項會導致運行時錯誤。
在Swift中可以做到這一點嗎?
這並不編譯。 '在調用中額外的參數'字符串' – Brad 2015-04-02 20:19:20
它適用於我在遊樂場 – Paulw11 2015-04-02 20:20:25
你使用的是什麼版本的Xcode?我有6.2,它會抱怨,如果我省略「字符串:」。 – Paulw11 2015-04-02 20:25:10