1

次のように CoreData フェッチから NSArray を作成しました。

self.farSiman = [self.managedObjectContext executeFetchRequest:request error:&error];

テーブルビューで、次のコードを使用してカスタム オブジェクトを取得しました。

Holiday *holiday = [self.dates objectAtIndex:indexPath.row];
cell.nameLabel.text = holiday.name;

しかし、私は別のビューコントローラーで、マップキットにデータをプロットしようとしているので、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++ですか?

4

1 に答える 1

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"]
}
于 2013-01-04T03:16:19.037 に答える