2016-05-14 14 views
0

Ich übertrage Daten aus meiner iOS-App über den Anwendungskontext an die Watch-Erweiterung. Ich möchte ein benutzerdefiniertes Objekt senden, das ich erstellt habe (WeatherReport).Wert des Typs 'CustomObject' entspricht nicht dem erwarteten Wörterbuchwerttyp 'AnyObject'

let context = ["report" : WeatherReport] 
WCSession.defaultSession().updateApplicationContext(context) 

Allerdings bekomme ich folgende Fehlermeldung:

Value of type WeatherReport does not conform toe expected dictionary value type 'AnyObject'

Ich frage mich, warum ich nicht in der Lage bin mein benutzerdefiniertes Objekt als Wert im Wörterbuch setzt ich als application passieren versuchen.

+1

Was ist 'Wetterbericht'? Ist es eine 'Struktur'? – luk2302

+0

@ luk2302 Es ist nur eine benutzerdefinierte Klasse (keine Struktur), erstellt aus einer leeren Swift-Datei – vikzilla

+0

@ luk2302 Ah, auf den zweiten Blick ist es eigentlich struct! Ich nahm an, dass es nicht so war, weil ich oft nur mit Unterricht gehe. Das scheint es zu lösen. Danke – vikzilla

Antwort

1

Selbst wenn Sie den Compilerfehler überstanden hätten, würden Sie einen Laufzeitfehler bekommen. WCSession Wörterbücher können nur enthalten property list types, das sind nur grundlegende Typen wie Strings, Zahlen, Daten, etc.

Wenn Sie wirklich Ihre individuelle senden möchten Objekt, das Sie werden es zuerst serialisiert haben. Die bessere Lösung ist wahrscheinlich, Ihr Objekt in ein Plist-Wörterbuch zu konvertieren (jede Eigenschaft wird zu einem Schlüsselwert im Wörterbuch).