2016-04-17 4 views
0

Das Folgende ist eine Testmethode zwischen den watchOS und iOS Komponenten meiner App für die Kommunikation:senden Array von NSManagedObject zu watchOS in nachrichts: Antwort-Handler

- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message replyHandler:(void (^)(NSDictionary<NSString *,id> * _Nonnull))replyHandler { 

    NSArray *responseArray = @[@"hello", "world"]; 
    NSDictionary *responseDict = @{@"response": responseArray}; 
    replyHandler(response); 
} 

Das funktioniert perfekt - in der Antwort-Handler auf der Uhr Ich kann den Inhalt von responseDict protokollieren und sehe die Objekte @"hello" und @"world". Wenn ich jedoch responseArray so ändere, dass NSManagedObject-Instanzen enthalten sind (um aktuelle Daten an die Überwachung zu senden), wird der sendMessage-Fehlerhandler mit dem Fehler Payload could not be delivered ausgelöst. Bevor ich meine Datenbankstruktur ändere, um eine UUID für die Entitäten zu enthalten, die ich senden muss (damit ich sie durch ihre UUID im NSString-Format darstellen kann), wollte ich nur überprüfen: Ist es tatsächlich möglich, NSManagedObject-Instanzen an watchOS zu senden?

Antwort

1

Nein, es ist nicht möglich, Instanzen zwischen Kontexten, Threads oder Geräten zu senden.

Ein verwaltetes Objekt existiert nur innerhalb seines verwalteten Objektkontextes. Seine Daten wären null, wenn Sie versuchen würden, auf den Kontext zuzugreifen oder ihn zu kopieren.

Wenn sich Ihr persistenter Stammdatenspeicher auf dem Telefon befindet, Sie jedoch die Daten eines verwalteten Objekts auf der Uhr anzeigen möchten, müssen Sie zuerst die Daten vom verwalteten Objekt in einen anderen Typ (z. B. ein Wörterbuch) verschieben. und dann senden Sie diese Daten an die Uhr.

Weitere Details finden Sie unter this answer.

+0

Danke, das war sehr hilfreich. Ich werde den Entitäten, die für die Überwachung freigegeben werden müssen, ein UUID-Attribut hinzufügen, damit ihre Daten in NSDictionaries gespeichert und dann an die Überwachung gesendet und mit den Entitäten abgeglichen werden können, wenn sie von der Überwachung zurückgesendet werden. – mashers