Я просто пытаюсь сохранить ManagedObjectContext, но пока я не получаю никаких ошибок, запрашиваемый запрос возвращает объект без каких-либо сохраненных значений. Рассмотрим этот простой пример. У вас есть один объект, вы меняете свойство и сохраняете его. Объект есть, но свойство не сохраняется. Как вы можете видеть, мне нужен только один объект, и выборка возвращает этот один объект. BTW, код находится в простом классе, а не в делегате приложения или контроллере представления.Основные данные, не могу сохранить контекст
Вот пример кода:
MyAppDelegate* delegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext* context = delegate.managedObjectContext;
NSEntityDescription *myEntityDesc = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:context];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:myEntityDesc];
NSError *error = nil;
NSArray *array = [context executeFetchRequest:request error:&error];
MyEntity* myEntity;
if (array == nil || [array count] < 1)
{
myEntity = [NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:context];
}
else
{
myEntity = [array objectAtIndex:0];
}
myEntity.BoolValue = [NSNumber numberWithBool:someBoolValue];
myEntity.ID = @"Some ID";
if ([context save:&error])
{
NSLog(@"no error");
}
else
{
NSLog([NSString stringWithFormat:@"found core data error: %@", [error localizedDescription]]);
}
Вот код, который используется для получения значений позже:
MyAppDelegate* delegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext* context = delegate.managedObjectContext;
NSEntityDescription *MyEntityDesc = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:context];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:MyEntityDesc];
NSError *error = nil;
NSArray *array = [context executeFetchRequest:request error:&error];
MyEntity* myEntity;
if (array == nil || [array count] < 1)
{
//handle error
}
else
{
myEntity = [array objectAtIndex:0];
}
return [myEntity.BoolValue boolValue];
Можете ли вы проверить, что ваш контекст управляемого объекта не 'nil'? – sho
Я положил чеки по всему месту. Объекты по-прежнему находятся в сфере охвата. – CYAD