我尝试掌握 Swift 以及如何最好地将 nil 对象和有效对象与可选对象分开。
我有这个代码:
var my AwesomeDict = [:]()
...
... (myAwesomeDict gets populated)
...
let myOptionalObject:objectClass? = myAwesomeDict[key]
if let myUnwrappedObject = myOptionalObject {
...
} else {
println("Sorry, object is nil")
}
Run Code Online (Sandbox Code Playgroud)
当我在 if 子句两边加上括号时(我觉得它提高了可读性),XCode 会用编译器错误标记该行:
模式变量绑定不能出现在表达式中
有什么不同之处
if (let myUnwrappedObject = myOptionalObject) {
Run Code Online (Sandbox Code Playgroud)
从
if let myUnwrappedObject = myOptionalObject {
Run Code Online (Sandbox Code Playgroud)
?遗憾的是,文档没有提及 if 条件周围的大括号的效果。看来我需要使用无括号版本,但想更了解其中的原因。
我对通过低功耗蓝牙将 HID 设备连接到 iOS 主机有些困惑。
苹果在其蓝牙设计指南中说:
当第三方 iOS 应用程序发现配件上的服务时,以下服务由 iOS 内部使用,并从发现的服务列表中过滤掉:
- 通用属性配置文件服务
- 通用访问配置文件服务
- 低功耗蓝牙 HID 服务
- Apple 通知中心服务
那么如何将 BLE 键盘之类的东西连接到 iOS?应该使用 HID over GATT 配置文件的 BLE 设备如何向 iOS 主机宣布其 HID 服务?
如果我正确理解了文档,iOS 将不会报告从配件宣布的 BLE HID 服务,因此任何尝试连接的软件都不会发现有什么东西想要通过 HOGP 进行通信。这是外部键盘等的协议。同样,当 iOS 为自己声明该功能时,如何将 BLE 键盘之类的东西识别为 BLE HID 服务?