2012-07-07 13 views
8

IOS iCloudNSInternalInconsistencyException (Fehler während der Ausführung der SQL-Zeichenfolge 'INSERT INTO Y_UBMETA (YPEERID, YTRANSACTIONNUMBER))

app Beenden aufgrund abgefangene Ausnahme 'NSInternalInconsistencyException', Grund:' Fehler während der Ausführung von SQL-Zeichenfolge ‚INSERT INTO Y_UBMETA (YPEERID, YTRANSACTIONNUMBER)

Nicht aufgelöster Fehler Fehlerdomäne = NSCOAErrorDomain Code = 134312 "Die Wiederherstellung der Speichermetadaten scheint fehlgeschlagen zu sein. Versuchen Sie den Speicher erneut dem Koordinator hinzuzufügen. Wenn dies nicht erfolgreich ist, migrieren Sie die Daten in einen neuen ubiquitizierten persistenten Geschäft." UserInfo = 0xdba5b80 {NSLocalizedDescription = Wiederherstellung der Speichermetadaten scheint fehlgeschlagen zu sein. Versuchen Sie, den Speicher erneut zum Koordinator hinzuzufügen. Wenn dies nicht erfolgreich ist, migrieren Sie die Daten in einen neuen ubiquitierten persistenten Speicher.}, { NSLocalizedDescription = "Die Wiederherstellung der Speichermetadaten scheint fehlgeschlagen zu sein. Versuchen Sie den Speicher erneut dem Koordinator hinzuzufügen. Wenn dies nicht erfolgreich ist, migrieren Sie die Daten in a neuer ubiquitierter persistenter Speicher. ";

Wie löse ich dieses Problem? Coz, dass es eine interne Abfrage für iCloud ist. Ich bin mein Code-Block unterhalb des Verfahrens setzt i geschrieben haben ..

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

Antwort

0

ich das gleiche Problem bekommen haben, es passiert ist, weil ich das Attribut des Datenmodells von Xcode geändert haben, nicht von meiner App von Code. Ich löste dies, indem ich die SQLite-Datei von iCloud löschte und die App vom Gerät löschte und dann neu erstellte. Es hat für mich funktioniert.