при загрузке Root View Controller управляемый объект с именем Target должен быть создан с использованием удобного метода:
- (void)viewDidLoad {
[super viewDidLoad];
if (context == nil) {
context = [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
if ([fetchedResultsController.fetchedObjects count] < 1) {
Target *aTarget = (Target *)[NSEntityDescription insertNewObjectForEntityForName:@"Target" inManagedObjectContext:context];
}
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
if(![context save:&error]){
//Handle error.
} ...
Если я запускаю приложение на своем iPhone из Xcode, все работает нормально. Тем не менее, если я остановлю тестовый запуск и перезапущу приложение на iPhone, будет создан новый управляемый объект, несмотря на условие
[fetchedResultsController.fetchedObjects count] < 1)
, кажется, не удовлетворен (в конце концов, я просто не знаю почему). Как только приложение запускается на телефоне независимо от XCode, я могу закрыть и перезапустить его, не увеличивая количество созданных управляемых объектов. Только первый раз после отключения его от Xcode.
Примечание. Отключение от XCode вызывает ошибку Segmentation: 11 , которая также появляется, когда я отключаю другое приложение Core Data от XCode. Так что я бы не приписывал эту ошибку моей проблеме.
Есть идеи, как запретить приложению создавать этот дополнительный объект? Вам нужно больше кода, чтобы выяснить проблему? Большое спасибо.