我有這樣的結構在我的iOS應用程序和它的Apple關注擴展都宣佈爲結構watchOS不能的sendMessage()
struct nonIndexStruct {
let name: [String]
let message: [String]
}
我創建這樣
let nIS = nonIndexStruct(name: sortedNameArray.map({ ($0).name }), message: sortedNameArray.map({ ($0).name }))
在一個對象爲了將它傳遞給我的蘋果手錶擴展,我把對象寫成字典
let chatsMasterDict:[String: Any] = ["chatsMaster": nIS]
打印這個工作完全正常,所有數據都可以在這個對象。要發送的話,我打電話
session.sendMessage(chatsMasterDict, replyHandler: nil, errorHandler: nil)
現在的問題是,沒有到達的Apple關注的一面。 errorHandler僅在Apple Watch應用程序未打開時打印某些內容。 (關於手錶的應用程序沒有被打開)
對蘋果關注的接收方法是這樣的,它打印收到的一切 - 除了上面顯示的情況下,該方法根本不被調用。
func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
print("didReceive")
print (message)
if let val = message["chatsMaster"]{
print("chatsMaster came")
. . .
我最好的猜測是,雖然結構是可用於兩個系統,之間的橋樑並不「知道」它並不能處理它。當關閉應用程序時,我也得到
無法將'__NSCFString'(0x12e9fe0)類型的值轉換爲'NSArray'(0x12ea670)。 2017年9月6日12:23:24.237016 + 0200 APPNAME WatchKit擴展[20802:3718623]無法投類型 '__NSCFString'(0x12e9fe0)的值設爲 '的NSArray'(0x12ea670)。
但是,只有當我停止該過程時,纔會發生這種情況,因此idk是否與我的問題有關。
編輯:Apple關注文檔說
鍵和你的字典裏的值必須全部財產清單 類型,因爲數據必須串行化和無線發送。
所以這可能是爲什麼它不工作。什麼是最好的解決方法?使它Data
會有點矯枉過正我猜想,因爲我的結構的內容是非常簡單的:/
完美的解決方案,正是我所需要的!你忘了返回類型後面的括號,但這是完美的,非常感謝! – user2875404
很高興我能幫到你。感謝您的更正,我用括號更新了我的答案。 –