NSFetchRequest возвращает правильное количество объектов, но каждый объект содержит ноль атрибутов - PullRequest
1 голос
/ 09 марта 2010

Я не могу понять, почему это происходит. Я могу добавить в контекст. Но когда я получаю объекты, он возвращает правильное количество объектов, но атрибуты объектов равны нулю.

Я добавляю 3 экземпляра с этим кодом:

+ (BOOL) addStoreWithID: (NSNumber *) ID Широта: (NSNumber *) широта Долгота: (NSNumber *) долгота Имя: (NSString *) имя {

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 *) fetchAllObjects {

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] имя магазина (пусто) (GDB) продолжить 2010-03-07 19: 21: 01.541 GamePouch_iPhone [11337: 207] имя магазина (пусто) (GDB) продолжить 2010-03-07 19: 21: 02.503 GamePouch_iPhone [11337: 207] название магазина (null)

Большое спасибо за чтение. Любая помощь приветствуется.

Спасибо Бахтияр Уддин

1 Ответ

0 голосов
/ 16 марта 2010

Я вижу, в чем проблема: Для NSManagedObjects мы должны использовать valueForKey

Я должен был использовать [tempStore valueForKey: @ "Имя"] вместо [имя временного хранилища]

...