Я использую WatchConnectivity
для отправки массива строковых значений с iPhone на Watch, но при этом я получаю следующую ошибку.Как отправить массив для просмотра с помощью sendMessage | Ошибка: не удалось передать значение типа «__NSCFArray» в «NSString»
Could not cast value of type '__NSCFArray' (0x591244) to 'NSString' (0x9f7458).
У меня были некоторые незначительные проблемы с отправкой массива строк в словаре на часы, а затем сохранить массив для использования в WKInterfaceTable
.
Кто-нибудь знает, где я ошибаюсь, и как я могу отображать массив на часах?
iPhone
После получения первого сообщения от часов, чтобы отправить данные на айфоны didRecieveMessage
выполняют следующие действия.
Существует массив, называемый objectsArray
, и каждый объект имеет свойство string, которое называется title
. Я создаю новый массив для всех значений title
и использую массив в словаре для отправки на часы.
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
var watchArray = [""]
for object in self.objectsArray {
watchArray.append(object.title)
}
print("Received message from watch and sent array. \(watchArray)")
//send a reply
replyHandler([ "Value" : [watchArray] ])
}
Часы
var objectTitlesArray = ["String"]
//Display Array in WKInterfaceTable
func loadTableData() {
table.setNumberOfRows(self.tasks.count, withRowType: "CellRow")
if self.tasks.count > 0 {
for (index, objectTitle) in self.objectTitlesArray.enumerate() {
let row = self.table.rowControllerAtIndex(index) as! CellRowController
row.tableCellLabel.setText(objectTitle)
}
}
}
//Saving the Array
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.objectTitlesArray = value
print("Received Array and refresh table")
loadTableData()
}
//send a reply
replyHandler(["Value":"Yes"])
}
UPDATE
ошибка упоминалось, кажется, что-то делать с действием обновления при установке текста метки для значения. Однако после комментирования строк, массив по-прежнему не отображается в WKInterfaceTable, и ни один из операторов печати не выводится на консоль.
При изменении литья значения значения для '[массива]' Я получаю следующее сообщение об ошибке 'Неоднозначности ссылка на член«Индекс»', когда я оставил его как '[String]' и просто изменить обработчик ответа на телефон, то я все еще получаю ту же ошибку, упомянутую в моем вопросе. – RileyDev
См. Обновленный ответ. –
К сожалению, все еще получаю 'Неоднозначная ссылка на член 'Subscript'' :( – RileyDev