小编jus*_*tin的帖子

在app delegate中添加持久存储(启用iCloud)时崩溃

我将开始更新这个,以帮助那些寻求使用它作为他们自己的个人代码的参考.

最新更新

  • 我很确定我已经找到了一种方法,一旦它们停止相互通信,就可以将设备重新同步.我将在下面用所有细节更新我的答案.我完全希望你们都觉得这很有帮助.花了将近2个月的试验和错误来解决这个问题.所以请参考并与其他有类似问题的人分享,让设备再次通过iCloud相互交谈.我花了很长时间才弄清楚这一点,所以我非常乐意尽可能多地保存其他开发人员来创建自己的make-shift修复程序.

另一个有助于正确设置的补充

  • 我发现在更新具有与帐户关联的iCloud数据的应用程序后,打开它时可能会导致崩溃,因为iCloud数据将尝试立即合并到设备中(设备尚未设置其持久存储).现在我已经加入 @property (nonatomic, readwrite) BOOL unlocked;AppDelegate.h@synthesize unlocked;AppDelegate.m.然后我改变了我的- (NSPersistentStoreCoordinator *)persistentStoreCoordinator方法以及我的- (void)mergeChangesFrom_iCloud方法,两者都将在下面显示(在持久存储设置的中间和iCloud合并方法的底部).本质上,我告诉应用程序阻止iCloud合并数据,直到应用程序设置其持久存储.否则,您将看到应用程序因无法读取的故障而崩溃.

以下是我设置persistentStoreCoordinator的方法:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (__persistentStoreCoordinator != nil)
    {
        return __persistentStoreCoordinator;
    }


    // here is where you declare the persistent store is not prepared;
    self.unlocked = NO;

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Maintain_My_Car.sqlite"];

    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];   

    NSPersistentStoreCoordinator *psc = __persistentStoreCoordinator; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSDictionary *options = …
Run Code Online (Sandbox Code Playgroud)

iphone core-data ios5 icloud

38
推荐指数
2
解决办法
1万
查看次数

标签 统计

core-data ×1

icloud ×1

ios5 ×1

iphone ×1