NSFetchRequest возвращает правильное количество объектов, но каждый объект содержит нулевые атрибуты
-
18-09-2019 - |
Вопрос
Я не могу понять, почему это происходит.Я могу добавить что-то к контексту.Но когда я извлекаю объекты, он возвращает правильное количество объектов, но атрибуты объектов равны нулю.
Я добавляю 3 экземпляра с помощью этого кода:
+(BOOL)Добавить STOREWITHID:(NSNumber *)Идентификатор Широта: (NSNumber *)Широта Долгота: (NSNumber *)Имя долготы: (NSNumber *)имя {
Stores *store = (Stores *)[NSEntityDescription
insertNewObjectForEntityForName:@"Stores"
inManagedObjectContext:[[SharedResources instance] managedObjectContext]];
store.ID = ID;
store.Latitude = latitude;
store.Longitude = longitude;
store.Name = name;
NSError *error;
if(![[[SharedResources instance] managedObjectContext] save:&error])
{
//Handle the error
return NO;
}
return YES;
} Я получаю результат:2010-03-07 19:19:37.060 GamePouch_iPhone[11337:207] Название магазина - Starbucks (gdb) продолжить 2010-03-07 19:19:37.933 GamePouch_iPhone[11337:207] Название магазина - Dunkin Donuts (gdb) продолжить 2010-03-07 19:19:38.717 GamePouch_iPhone[11337:207] Название магазина - Krispy Kreme
Я подтвердил, что этот код посещался три раза, и ни один из атрибутов не равен нулю.
Затем, когда я пытаюсь извлечь его, я использую следующий код:
+(NSMutableArray *)Извлекать все объекты {
NSFetchRequest *request;
request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Stores" inManagedObjectContext:[[SharedResources instance] managedObjectContext]];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ID" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
NSMutableArray *array = [[[SharedResources instance] managedObjectContext] executeFetchRequest:request error:&error];
[request release];
[sortDescriptor release];
[sortDescriptors release];
for(int i=0;i<3;i++)
{
Stores *tempStore = (Stores *)[array objectAtIndex:i];
NSLog(@"store name is %@",[tempStore Name]);
}
return array;
}
Я получаю результат:2010-03-07 19:21:00.504 GamePouch_iPhone[11337:207] название магазина (null) (gdb) продолжить 2010-03-07 19:21:01.541 GamePouch_iPhone[11337:207] название магазина (null) (gdb) продолжить 2010-03-07 19:21:02.503 GamePouch_iPhone[11337:207] название магазина (null)
Большое спасибо за чтение.Любая помощь была бы высоко оценена.
Спасибо Бахтияр уддин
Решение
Я вижу, в чем проблема:Для NSManagedObjects мы должны использовать valueForKey
Я должен был использовать [tempStore valueForKey:@"Name"] вместо [Название tempStore]