icloud&核心数据启用应用程序在IOS 6上首次启动而无需互联网连接

时间:2012-12-25 15:44:31

标签: objective-c ios core-data sync icloud

我只是创建了icloud集成核心数据应用程序,它在正常情况下完美运行,但是在首次启动没有互联网连接的应用程序时,我在IOS 6上遇到了奇怪的问题。 应用程序停止响应。

我已经控制了我的代码并在Google上查看了与此问题相关的几乎所有主题,但我找不到任何答案。

我在WWDC 2012上也经历过完全相同的问题iCloud&核心数据示例代码(SharedCoreData),发布在开发人员门户网站上。

关于apple的示例代码,我已经跟踪过这个问题,直到“addPersistentStoreWithType”。

在下面你可以找到部分苹果代码发生冻结, 坦率地说,由于苹果的版权问题,我犹豫是否共享所有代码。

但那,(BOOL)loadiCloudStore:已经从另一个线程调用了, 所以实际上没有线程问题, 冻结只是在调用“managedObjectContext”时发生。

那么,你们有没有想过为什么“addPersistentStoreWithType”在没有互联网连接的情况下首次启动时停止响应?

- (BOOL)loadiCloudStore:(NSError * __autoreleasing *)error {
    BOOL success = YES;
    NSError *localError = nil;

    NSFileManager *fm = [[NSFileManager alloc] init];
    _ubiquityURL = [fm URLForUbiquityContainerIdentifier:nil];

    NSURL *iCloudStoreURL = [self iCloudStoreURL];
    NSURL *iCloudDataURL = [self.ubiquityURL URLByAppendingPathComponent:@"iCloudData"];
    NSDictionary *options = @{ NSPersistentStoreUbiquitousContentNameKey : @"iCloudStore",
                                NSPersistentStoreUbiquitousContentURLKey : iCloudDataURL };

//after that point thread freeze
    _iCloudStore = [self.psc addPersistentStoreWithType:NSSQLiteStoreType
                                          configuration:@"CloudConfig"
                                                    URL:iCloudStoreURL
                                                options:options
                                                  error:&localError];


    success = (_iCloudStore != nil);
    if (success) {
        //set up the file presenter
        _presentedItemURL = iCloudDataURL;
        [NSFileCoordinator addFilePresenter:self];
    } else {
        if (localError  && (error != NULL)) {
            *error = localError;
        }
    }

    return success;
}

0 个答案:

没有答案