Je possède ce struct déclaré à la fois mon application iOS et son extension Apple Suivrewatchos ne peuvent pas sendMessage() une struct
struct nonIndexStruct {
let name: [String]
let message: [String]
}
-je créer un objet comme celui-ci
let nIS = nonIndexStruct(name: sortedNameArray.map({ ($0).name }), message: sortedNameArray.map({ ($0).name }))
En afin de le passer à mon Apple Watch Extension, je l'ai mis dans un dict
let chatsMasterDict:[String: Any] = ["chatsMaster": nIS]
Impression cela fonctionne parfaitement bien, toutes les données sont disponibles dans cet objet. Pour l'envoyer, je l'appelle
session.sendMessage(chatsMasterDict, replyHandler: nil, errorHandler: nil)
Maintenant, le problème est que rien arrive du côté d'Apple Watch. ErrorHandler imprime uniquement quelque chose lorsque l'application Apple Watch n'est pas ouverte. La méthode de réception sur l'Apple Watch ressemble à ceci et elle imprime tout ce qu'elle reçoit - sauf dans le cas montré ci-dessus, la méthode n'est tout simplement pas appelée.
func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
print("didReceive")
print (message)
if let val = message["chatsMaster"]{
print("chatsMaster came")
. . .
Ma meilleure estimation est que même si la struct est disponible pour les deux systèmes, le pont entre les deux ne « connais » pas et ne peut pas le manipuler. Lors de la fermeture de l'application, je reçois également
Impossible de convertir la valeur de type '__NSCFString' (0x12e9fe0) en 'NSArray' (0x12ea670). 2017-09-06 12: 23: 24.237016 + 0200 APPNAME Extension WatchKit [20802: 3718623] Impossible de convertir la valeur de type '__NSCFString' (0x12e9fe0) en 'NSArray' (0x12ea670).
Mais encore une fois, cela ne se produit que lorsque j'arrête le processus si idk si cela concerne mon problème.
EDIT: documentation Apple Watch,
Les touches et les valeurs de votre dictionnaire doivent tous être la liste des biens types , parce que les données doivent être sérialisés et envoyés sans fil.
alors c'est probablement pourquoi cela ne fonctionne pas. Quelle est la meilleure solution de contournement? Le faire Data
serait un peu exagéré je suppose que le contenu de ma structure est assez simple:/
Solution parfaite, juste ce dont j'avais besoin! Vous avez oublié les supports derrière le type de retour mais c'est parfait, merci beaucoup! – user2875404
Content de pouvoir aider.Merci pour la correction, j'ai mis à jour ma réponse avec les crochets. –