NSFetchRequest返回正确数量的对象,但每个对象包含nil属性

时间:2010-03-09 01:15:02

标签: core-data nsfetchrequest

我无法弄清楚为什么会这样。我可以添加到上下文中。但是当我检索对象时,它返回正确数量的对象,但对象的属性为null。

我正在使用此代码添加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]商店名称是星巴克 (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

我已确认此代码被访问了三次,并且没有任何属性为nil。

然后当我尝试检索它时,我使用以下代码:

+(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]商店名称为(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)

非常感谢阅读。 任何帮助将非常感激。

由于 Bakhtiyar uddin

1 个答案:

答案 0 :(得分:0)

我知道问题是什么: 对于NSManagedObjects,我们必须使用valueForKey

我应该用过 [tempStore valueForKey:@“Name”] 代替 [tempStore名称]