iCloud同步不通过普遍容器发送数据

时间:2012-02-19 03:46:00

标签: iphone ios core-data ios5 icloud

我已经在我的应用程序中使用了iCloud一段时间了,最​​近我遇到的问题是设备拒绝互相通话。或者至少这是我的想法,直到我开始记录合并发生的方法。我的persistentStoreCoordinator设置如previous question of mine

中所述

问题如下。在设置我的managedObjectContext时,我向它添加一个观察者来查看NSPersistentStoreDidImportUbiquitousContentChangesNotification通知,如下所示:

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

其中coordinator设置为NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]

我的iCloud方法如下:

- (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];
    }];
}

现在我们遇到了实际问题

起初,同步完美无缺。来自一个设备的数据被更改,然后该更改出现在另一个设备上。但现在,没有。好奇的部分在mergeiCloudChanges:forContext:中看到的那些日志中。合并实际发生。我看到这个触发了。但合并备注的insertdeleteupdate部分始终没有内容。因此合并发生,但没有数据。对于我的生活,我无法弄清楚为什么这是或如何让它再次正确同步。任何帮助都不仅仅是值得赞赏的。

注意:我还使用NSUbiquitousKeyValueStoreDidChangeExternallyNotification通知NSUbiquitousKeyValueStore(我用它来同步NSUserDefault键值),这些通知转移并更新,没有任何打嗝总之,这让我更加困惑persistentStoreCoordinator通知为空的原因。

我真的希望有人见过/经历过这种情况,因为经过两个星期的努力,我能想到找到并自行解决这个问题,我觉得我现在处于停滞状态。

1 个答案:

答案 0 :(得分:0)

我已经弄明白了。基本上,事务日志似乎已损坏或放错位置。我重新设计了一种重新设置设备的方法,并将立即发布结果on a previous question of mine