Я разрабатываю приложение OS X, которое использует однопоточную модель основных данных без вложенных контекстов.
Я создаю объекты в основном потоке в defaultContext и пытаюсь сохранить их после создания, но сохранение не удается без возврата ошибки. Я не перезаписывал методы в своих объектах CoreData, но использую последнюю версию MagicalRecord.
Код, который не работает:
// pseudocode for createOrFetchWithData:inContext:
// fetch object from value in objectDict
// if(!object) create project in context
// [object importValuesForKeysWithObject:objectData] // MR method
// return object
MyObject *object = [MyObject createOrFetchWithData:objectData
inContext:[NSManagedObjectContext defaultContext]];
if(!object) return; // just to emphasise that I am sure the object is not nil.
[[NSManagedObjectContext defaultContext] saveOnlySelfWithCompletion:^(BOOL saveSuccessful, NSError *error) {
if(saveSuccessful) {
NSLog(@"yay");
} else {
NSLog(@"nay");
}
}];
Возвращаемое значение [NSManagedObjectContext defaultContext]
не равно нулю, и я убедился, что код выполняется в основном потоке.
У меня есть отношение, которое не задано в MyObject *object
, но помечено как optional
в модели данных.
Любая идея, что может привести к сбою этой простой операции? У меня есть другие объекты, которые отлично сохраняются, но в этом конкретном случае происходит сбой.
Примечание. Я использую OS X Mavericks DP 8.