2012-01-24 4 views
8

Quando si tenta di salvare il contesto del mio modello CoreData, ricevo un erroreCoreData non riesce a salvare contesto, dicendo rapporto è pari a zero - tuttavia è sicuramente impostato

Unresolved error Error Domain=NSCocoaErrorDomain Code=1560 "The operation couldn’t be completed. (Cocoa error 1560.)" UserInfo=0x76924b0 {NSDetailedErrors=( "Error Domain=NSCocoaErrorDomain Code=1570 " The operation couldn\U2019t be completed. (Cocoa error 1570.)" UserInfo=0x768c410 {NSValidationErrorObject=<Posts: 0x7177990> (entity: Posts; id: 0x7177010 <x-coredata:///Posts/tEF7138E6-A968-45B7-95CF-116C2AA93D605> ; data: {\n " business_entity" = nil;\n "
created_at" = " 2012-01-21 03:31:30 +0000" ;\n " own_description" = " Roasted this morning- Panama Duncan Estate: A rose fragrance debuts flavors of pear, coconut and marshmallow with caramel throughout the cup." ;\n postsID = 4;\n " updated_at" = " 2012-01-21 03:31:30 +0000" ;\n}), NSValidationErrorKey=business_entity, NSLocalizedDescription=The operation couldn\U2019t be completed. (Cocoa error 1570.)}",

Key dell'articolo essere:

business_entity = nil;
NSValidationErrorKey=business_entity

Tuttavia quando creo i miei "Messaggi" oggetto ho impostato loro in modo tale che:

// First try to find a business for the post 
NSNumber* businessID = [NSNumber numberWithInteger: [(NSString*)[jsonInfo objectForKey:@"business_id"] integerValue]]; 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity: [NSEntityDescription entityForName:kCoreDataModelNameBusinesses inManagedObjectContext: self.managedObjectContext]]; 
[fetchRequest setPredicate: [NSPredicate predicateWithFormat:@"(businessesID == %i)", [businessID intValue]]]; 

NSError *error = nil; 
NSArray *matchingManagedObjects = [__managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

if(error) { 
    NSLog(@"Error-createNewPostsWithJsonInfo: Unresolved error %@, %@", error, [error userInfo]); 
    return; 
} 

// Check any results 
if([matchingManagedObjects count] == 0) { 
    NSLog(@"Error-createNewPostsWithJsonInfo: Could not locate a matching businessId: %@ for postId:%@", businessID, (NSString*)[jsonInfo objectForKey:@"id"]); 
} 
// Check too many results  
if([matchingManagedObjects count] > 1) { 
    NSLog(@"Error-createNewPostsWithJsonInfo: Too many bussinesses match businessId: %@ for postId:%@", businessID, (NSString*)[jsonInfo objectForKey:@"id"]); 
} 

// Final sanity check outputs fine!! 
NSLog(@"Business entity %@", (Businesses*)[matchingManagedObjects objectAtIndex:0]); 

// Finally create the post 
Posts* newPosts = [NSEntityDescription 
          insertNewObjectForEntityForName:entityName inManagedObjectContext:self.managedObjectContext]; 

newPosts.created_at = [_dateFormater dateFromString: [jsonInfo objectForKey:@"created_at"] ]; 
newPosts.updated_at = [_dateFormater dateFromString: [jsonInfo objectForKey:@"updated_at"] ]; 
newPosts.own_description = [jsonInfo objectForKey:@"description"]; 
newPosts.postsID = [NSNumber numberWithInteger: [(NSString*)[jsonInfo objectForKey:@"id"] integerValue]]; 
[newPosts setBusiness_entity: (Businesses*)[matchingManagedObjects objectAtIndex:0] ]; 

Quindi so che business_entity è stato impostato ed è corretto. Cosa potrebbe causare un errore durante il salvataggio del contesto in tale scenario?

Ecco il modello se questo aiuta:

enter image description here enter image description here

+0

è business_entity una relazione o una proprietà> – jackslash

+0

È una relazione - – Onedayitwillmake

risposta

6

Incase chiunque si imbatte in questo problema, l'errore è stato nel modo in cui mi è stato l'impostazione del rapporto di coredatamodel.

Queste immagini spiegano meglio di me, ma assicuratevi di impostare i rapporti come a-molti nell'entità proprietario, altrimenti non creare il set mutabili dinamicamente per voi

enter image description here enter image description here