【问题标题】:NSInternalInconsistencyException ( error during execution of SQL string 'INSERT INTO Y_UBMETA(YPEERID, YTRANSACTIONNUMBER) )NSInternalInconsistencyException(执行 SQL 字符串 'INSERT INTO Y_UBMETA(YPEERID, YTRANSACTIONNUMBER) 时出错)
【发布时间】:2012-07-07 13:49:58
【问题描述】:

iOS iCloud

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“执行 SQL 字符串时出错”INSERT INTO Y_UBMETA(YPEERID, YTRANSACTIONNUMBER)

未解决的错误 Error Domain=NSCocoaErrorDomain Code=134312 “存储元数据恢复似乎失败,请尝试再次将存储添加到协调器。如果不成功,请将数据迁移到新的泛化持久存储。” UserInfo=0xdba5b80 {NSLocalizedDescription=存储元数据恢复似乎失败,请重新尝试将存储添加到协调器。如果不成功,将数据迁移到新的泛化持久存储。}, { NSLocalizedDescription = "存储元数据恢复似乎失败,请尝试再次将存储添加到协调器。如果不成功,请将数据迁移到新的泛化持久存储。";

我该如何解决这个问题?因为它是 iCloud 的内部查询。我把我的代码块放在我写的方法下面..

    - (NSPersistentStoreCoordinator *)persistentStoreCoordinator
 {
     NSLog(@"persistentStoreCoordinator:%@",[persistentStoreCoordinator_ description]);
     if((persistentStoreCoordinator_ != nil)) 
     {
         return persistentStoreCoordinator_;
     }

     NSLog(@"persistentStoreCoordinator:%@",[persistentStoreCoordinator_ description]);
     NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreDataModel.sqlite"];

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


     NSPersistentStoreCoordinator* psc = persistentStoreCoordinator_;

     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    
             
         dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         NSFileManager *fileManager = [NSFileManager defaultManager];

         // Migrate datamodel
         NSDictionary *options = nil;

         // this needs to match the entitlements and provisioning profile
         NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil];

         NSLog(@"cloudURL:%@",cloudURL);

             //NSString* coreDataCloudContent = [[cloudURL path] stringByAppendingPathComponent:@"Data"];  
             
            cloudURL = [cloudURL URLByAppendingPathComponent:@"Data"];                                                                                                                                   

        // NSLog(@"coreDataCloudContent:%@",coreDataCloudContent);


        //if ([coreDataCloudContent length] != 0 && [[defaults objectForKey:@"allMetadataFlag"] isEqualToString:@"YES"]) 
             
        if (cloudURL )//&& [[defaults objectForKey:@"allMetadataFlag"] isEqualToString:@"YES"])
             
         {
             // iCloud is available
            // cloudURL = [NSURL fileURLWithPath:coreDataCloudContent];

             NSLog(@"cloudURL:%@",cloudURL);

             options = [NSDictionary dictionaryWithObjectsAndKeys:
                        [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                        [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
                        @"SecureAssistant.store", NSPersistentStoreUbiquitousContentNameKey,
                        cloudURL, NSPersistentStoreUbiquitousContentURLKey,nil];
         } 
         else 
         {
             // iCloud is not available
             options = [NSDictionary dictionaryWithObjectsAndKeys:
                        [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                        [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,nil];
         }
             NSError *error = nil;
         [psc lock];
         if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
         {
             NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
             abort();
         }
         [psc unlock];

         dispatch_async(dispatch_get_main_queue(), ^{
             NSLog(@"asynchronously added persistent store!");
             [[NSNotificationCenter defaultCenter] postNotificationName:@"RefetchAllDatabaseData" object:self userInfo:nil];
         });

     });
    
    return persistentStoreCoordinator_;
 }

【问题讨论】:

    标签: iphone xcode ios5 icloud icloud-api


    【解决方案1】:

    我遇到了同样的问题,这是因为我从 Xcode 中更改了 datamodel 的属性,而不是通过代码从我的应用程序中更改。我通过从 iCloud 中删除 SQLite 文件并从设备中删除应用程序然后重建来解决了这个问题。它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      相关资源
      最近更新 更多