我正在使用框架从手机向苹果手表发送一个名为字符串值WatchConnectivity
的数组。watchItems
我从已发送的字典中添加 ,并将其添加到手表上watchItems
调用的数组中以在.items
WKInterfaceTable
将标签的文本设置为 theItem 时,以下行发生错误。
for (index, theItem) in self.items.enumerate() {
let row = self.table.rowControllerAtIndex(index) as! CellRowController
row.bookmarksCellLabel.setText(theItem)
}
这是我在做什么的完整解释。
苹果手机
self.items
是一个NSManagedObject
s 数组,每个项目都有一个名为的属性title
,它是一个字符串。所以我循环遍历objects
数组并将所有字符串值添加到一个名为watchItems
.
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
var watchItems = [""]
for item in self.items {
watchItems.append(item.title)
}
//send a reply
replyHandler( [ "Value" : [watchItems]])
}
苹果手表
这里我将接收到的消息字典中的 watchItems 数组添加到items
手表上的数组中。该watchItems
数组是一个字符串值items
数组,手表上的数组也是如此。
var items = [String]()
@IBAction func refreshAction() {
let messageToSend = ["Value":"Hello iPhone"]
session.sendMessage(messageToSend, replyHandler: { replyMessage in
let value = replyMessage["Value"] as! String
self.titleLabel.setText(value)
}, errorHandler: {error in
// catch any errors here
print(error)
})
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
let value = message["Value"] as! [String]
dispatch_async(dispatch_get_main_queue()) {
self.items.removeAll()
self.items.append(value)
self.loadTableData()
}
//send a reply
replyHandler(["Value":"Yes"])
}
WKInterfaceTable
将标签重新加载并设置为 items 数组中的每个项目的函数。
func loadTableData() {
table.setNumberOfRows(self.items.count, withRowType: "CellRow")
if self.items.count > 0 {
for (index, theItem) in self.items.enumerate() {
let row = self.table.rowControllerAtIndex(index) as! CellRowController
row.cellLabel.setText(theItem)
}
}
}
将字符串值添加到cellLabel
. 有人知道我哪里可能出错了吗?