2012-07-07 16 views
8

IOS icloudNSInternalInconsistencyException (errore nell'esecuzione del stringa SQL 'insert into Y_UBMETA (YPEERID, YTRANSACTIONNUMBER))

terminazione app causa eccezione non identificata 'NSInternalInconsistencyException', ragione:' errore nell'esecuzione del stringa SQL 'insert into Y_UBMETA (YPEERID, YTRANSACTIONNUMBER)

non risolto errore errore Domain = Codice NSCocoaErrorDomain = 134.312 "recupero metadati Conservare sembra aver fallito, si prega di provare ad aggiungere il negozio al coordinatore di nuovo. Se questo è successo, la migrazione dei dati a un nuovo persistente ubiquitized negozio." UserInfo = 0xdba5b80 {NSLocalizedDescription = Il recupero dei metadati del negozio sembra non essere riuscito, prova ad aggiungere nuovamente il negozio al coordinatore. Se ciò non riesce, eseguire la migrazione dei dati in un nuovo archivio persistente ubiquitizzato.}, { NSLocalizedDescription = "Il recupero dei metadati del negozio sembra non essere riuscito, provare ad aggiungere nuovamente il negozio al coordinatore. Se ciò non riesce, eseguire la migrazione dei dati a un nuovo negozio persistente ubiquitizzato. ";

Come posso risolvere questo problema? Perché è una query interna per iCloud. Sto mettendo il mio blocco di codice al di sotto del metodo ho scritto ..

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

risposta

0

ho avuto lo stesso problema, è successo perché ho cambiato l'attributo di DataModel da Xcode, non dalla mia app per codice. Ho risolto questo eliminando il file SQLite da iCloud e cancellato l'app dal dispositivo, quindi ricostruire. Ha funzionato per me.