CoreData не удается сохранить контекст, говоря, что отношение равно nil - однако оно определенно установлено

При попытке сохранить контекст модели CoreData я получаю ошибку

Неразрешенная ошибка Error Domain=NSCocoaErrorDomain Code=1560 "The operation could not be completed. (Ошибка Cocoa 1560.)" UserInfo=0x76924b0 {NSDetailedErrors=( "Error Domain=NSCocoaErrorDomain Code=1570 " Операция не могла\U2019 быть завершена. (Ошибка Cocoa 1570.)". UserInfo=0x768c410 {NSValidationErrorObject=<Пост: 0x7177990> (entity: Posts; id: 0x7177010 ; data: {\n " бизнес_субъект" = nil;\n "
created_at" = " 2012-01-21 03:31:30 +0000" ;\n " own_description" = " Обжарен сегодня утром - Panama Duncan Estate: Аромат розы открывает вкус груши, кокоса и зефира с карамелью по всей чашке." ;\n postsID = 4;\n " updated_at" = " 2012-01-21 03:31:30 +0000" ;\n}), NSValidationErrorKey=business_entity, NSLocalizedDescription=Операция не могла быть завершена. (Cocoa error 1570.)}",

Ключевая часть:

business_entity = nil;
NSValidationErrorKey=business_entity

Однако, когда я создаю объект "Posts", я устанавливаю их так:

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

Таким образом, я знаю, что business_entity устанавливается и является правильным. Что может вызвать ошибку при сохранении контекста в таком сценарии?

Вот модель, если это поможет:

enter image description here enter image description here

8
задан Onedayitwillmake 24 January 2012 в 20:24
поделиться