2012-01-24 25 views
8

Khi tôi cố gắng để lưu các bối cảnh của mô hình CoreData của tôi, tôi nhận được một lỗiCoreData thất bại trong việc tiết kiệm bối cảnh, nói rằng mối quan hệ là con số không - tuy nhiên nó chắc chắn được thiết lập

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.)}",

chính phần con người:

business_entity = nil;
NSValidationErrorKey=business_entity

Tuy nhiên khi tôi tạo của tôi "bài" đối tượng tôi đặt chúng sao cho:

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

Vì vậy, tôi biết business_entity đang được đặt và chính xác. Điều gì sẽ gây ra lỗi khi lưu ngữ cảnh trong kịch bản như vậy?

Dưới đây là mô hình nếu điều đó giúp:

enter image description here enter image description here

+0

là business_entity mối quan hệ hoặc thuộc tính> – jackslash

+0

Đó là mối quan hệ - – Onedayitwillmake

Trả lời

6

Trong trường hợp bất cứ ai đi qua vấn đề này, lỗi là ở cách mà tôi đã thiết lập các mối quan hệ trong coredatamodel.

Những hình ảnh này sẽ giải thích tốt hơn so với tôi có thể, nhưng chắc chắn rằng bạn thiết lập các mối quan hệ như tới nhiều trong thực thể chủ sở hữu, nếu không nó sẽ không tạo ra các thiết lập có thể thay đổi tự động cho bạn

enter image description here enter image description here

Các vấn đề liên quan