Ich habe ein Benutzerobjekt, das ich in NSUserDefaults speichern und mit einer iOS 8-Erweiterungs-App (Watchkit) teilen muss. In der Hauptcontainer-App kann ich das Objekt problemlos codieren und dekodieren. Wenn ich versuche, das gespeicherte Benutzerobjekt in der Erweiterung abzurufen, erhalte ich jedoch einen "'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class"
-Fehler.
Soweit ich sehen kann, wurde NSCoding korrekt im Objekt implementiert (und ich kann das Objekt in der 'main' App kodieren und dekodieren).
Code in der 'Container'-App zum Speichern des Benutzerobjekts.
%Vor%Die letzte Zeile oben, um eine Test-Dekodierung in der Haupt-App durchzuführen funktioniert gut.
Der Code zum Abrufen von NSUserDefaults und Dekodieren im Erweiterungsziel ist unten.
%Vor%Im Erweiterungscode bekomme ich eine "NSInvalidUnarchiveOperationException", Grund: '*** - [NSKeyedUnarchiver decodeObjectForKey:]: Objekt der Klasse "
" kann nicht dekodiert werdenIrgendwelche Vorschläge, wo ich anfangen sollte zu suchen? Die App kompiliert gut, was zu der Annahme führt, dass die erforderlichen Frameworks in das Erweiterungsziel aufgenommen wurden.
Damit Ihre WatchKit-Erweiterung SFUserAccount-Objekte dekodieren kann, muss sie die SFUserAccount-Klasse verstehen. Um dies zu ermöglichen, sollte es zu Ihrer WatchKit-Erweiterung hinzugefügt werden.
Tags und Links objective-c nsuserdefaults watchkit ios8-extension