我从CoreData fetch中创建了一个NSArray,如下所示:
self.farSiman = [self.managedObjectContext executeFetchRequest:request error:&error];
在tableview中,我使用此代码来获取自定义对象:
Holiday *holiday = [self.dates objectAtIndex:indexPath.row];
cell.nameLabel.text = holiday.name;
但我现在在另一个viewcontroller中,试图在mapkit上绘制数据,所以在绘图方法中我最初这样做是因为我从plist文件中获取数组。但现在我的数组是自定义Holiday对象,所以这不再起作用了:
NSLog(@"dictionary is %@", self.farSiman);
for (NSDictionary * dict in self.farSiman) {
NSNumber * latitude = [dict objectForKey:@"latitude"];
NSNumber * longitude = [dict objectForKey:@"longitude"];
NSString * storeDescription = [dict objectForKey:@"name"];
NSString * address = [dict objectForKey:@"address"];
NSLog(@"logging location %@", storeDescription);
CLLocationCoordinate2D coordinate;
coordinate.latitude = latitude.doubleValue;
coordinate.longitude = longitude.doubleValue;
MyLocation *annotation = [[MyLocation alloc] initWithName:storeDescription address:address coordinate:coordinate];
[_mapView addAnnotation:annotation];
}
我的字典日志打印出来:
dictionary is (
"<Holiday: 0x838bc80> (entity: Holiday; id: 0x838ca60 <x-coredata://E41B0CCD-2F03-4C4F-B054-18537096771C/Holiday/p1> ; data: <fault>)",
"<Holiday: 0x838e330> (entity: Holiday; id: 0x838ca70 <x-coredata://E41B0CCD-2F03-4C4F-B054-18537096771C/Holiday/p2> ; data: <fault>)"
这意味着它是一个假日对象数组。
我如何在for循环中获取每个对象,因为我使用的是枚举而不是传统的for i = 0; i<count; i++
?
答案 0 :(得分:5)
看起来您正在使用CoreData的自定义对象,因此它将返回您的类的数组。
这是否有效:
for (Holiday *holiday in self.farSiman) {
// your code here
// [holiday foo]
}
如果CoreData没有使用你的自定义对象,它将返回一个NSManagedObject数组,在这种情况下使用它:
for (NSManagedObject *holiday in self.farSiman) {
// your code here
//[holiday valueForKey:@"foo"]
}