2012-01-24 16 views
8

Cuando intento para salvar el contexto de mi modelo CoreData, recibo un errorCoreData no puede guardar contexto, diciendo relación es nula - sin embargo, está definitivamente establecido

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 ser:

business_entity = nil;
NSValidationErrorKey=business_entity

Sin embargo cuando creo mis "Mensajes" objeto que los puso tal que:

// 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] ]; 

Entonces sé que se está estableciendo business_entity, y es correcto. ¿Qué le causaría un error al guardar el contexto en tal escenario?

Aquí es el modelo si eso ayuda:

enter image description here enter image description here

+0

es business_entity una relación o una propiedad> – jackslash

+0

Es una relación - – Onedayitwillmake

Respuesta

6

En caso que cualquier persona se encuentra con este problema, el error estaba en la forma en que yo estaba sentado en la relación coredatamodel.

Estas imágenes explicarán mejor que pueda, pero asegúrese de que establece las relaciones como a muchos en la entidad titular, de lo contrario no va a crear el conjunto mutable dinámicamente para usted

enter image description here enter image description here

Cuestiones relacionadas