Frage

Ich benutze iCloud in meinen Apps schon eine Weile und habe kürzlich ein Problem, bei dem Geräte sich weigern, miteinander zu sprechen. Zumindest dachte ich das, bis ich anfing, die Methoden zu protokollieren, bei denen die Zusammenführung stattfindet. Mein persistentStoreCoordinator wird wie in a beschrieben eingerichtet Vorherige Frage von mir.

Das Problem ist das folgende. Beim Einrichten meiner managedObjectContext, Ich füge einen Beobachter hinzu, um die NStersistentStoredIdimportubiquitouScontentChangesNotification -Benachrichtigung zu sehen, wie folgt:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mergeChangesFrom_iCloud:) name:NSPersistentStoreDidImportUbiquitousContentChangesNotification object:coordinator];

wo coordinator ist das Setup als NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator].

Meine iCloud -Methoden sind wie folgt:

- (void)mergeiCloudChanges:(NSNotification *)note forContext:(NSManagedObjectContext *)moc {
    NSLog(@"insert %@", [[note userInfo] valueForKey:@"inserted"]);
    NSLog(@"delete %@", [[note userInfo] valueForKey:@"deleted"]);
    NSLog(@"update %@", [[note userInfo] valueForKey:@"updated"]);
    [moc mergeChangesFromContextDidSaveNotification:note];

    NSNotification *refreshNotification = [NSNotification notificationWithName:@"RefreshAllViews" object:self userInfo:[note userInfo]];
    [[NSNotificationCenter defaultCenter] postNotification:refreshNotification];
}

- (void)mergeChangesFrom_iCloud:(NSNotification *)notification {
    NSLog(@"merging changes");
    NSManagedObjectContext *moc = [self managedObjectContext];
    [moc performBlock:^{
        [self mergeiCloudChanges:notification forContext:moc];
    }];
}

Jetzt haben wir also das tatsächliche Problem

Zuerst blieb die Synchronisierung fehlerfrei. Die Daten von einem Gerät wurden geändert, dann erschien diese Änderung auf dem anderen Gerät. Aber jetzt nichts. Der merkwürdige Teil liegt in den Protokollen, in denen Sie sehen mergeiCloudChanges:forContext:. Die Zusammenführung tritt tatsächlich auf. Ich sehe das ausgelöst. Aber die insert, delete, und update Teile der Zusammenführung sind immer ohne Inhalt. Die Zusammenführung tritt also auf, aber ohne Daten. Für mein Leben kann ich nicht herausfinden, warum dies ist oder wie ich es wieder richtig synchronisieren kann. Jede Hilfe wäre mehr als geschätzt.

Hinweis: Ich benutze auch die NSUbiquitousKeyValueStoreDidChangeExternallyNotification Benachrichtigung für meine NSUbiquitousKeyValueStore (mit dem ich die synchronisieren kann NSUserDefault Schlüsselwerte) und diese Benachrichtigungen übertragen und aktualisieren Sie ohne Schluckauf, was mich noch mehr darüber verwirrt, warum die persistentStoreCoordinator Benachrichtigungen sind leer.

Ich hoffe wirklich, dass jemand dies schon einmal gesehen/erlebt hat, weil ich nach zwei Wochen jede Möglichkeit anstrengte, die ich mir vorstellen kann, um dies selbst zu finden und zu beheben. Ich habe das Gefühl, dass ich jetzt im Stillstand bin.

War es hilfreich?

Lösung

Ich habe diesen herausgefunden. Grundsätzlich schienen die Transaktionsprotokolle beschädigt oder verlegt zu sein. Ich habe einen Weg zur Resycn -Geräte überarbeitet und werde die Ergebnisse sofort veröffentlichen auf eine frühere Frage von mir

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top