私は Objective-C と iOS に比較的慣れていないので、NSManagedObject
サブクラスを .xml として使用すると問題が発生しましたMKAnnotation
。NSManagedObject
すべての「場所」 (サブクラスと)を取得するフェッチ リクエストを実行してMKAnnotation
、マップに入力できるようにします。
でそれらをフェッチしても問題ありませviewDidLoad
んMapController
:
- (void)viewDidLoad
{
[super viewDidLoad];
DatabaseHelper *db = [DatabaseHelper newDatabaseHelper]; // does all the fetch requests ahead...
NSArray *places = [[db getPlacesForDeck:@"PlacesDeck"] allObjects];
/*
[places enumerateObjectsUsingBlock:^(Place *place, NSUInteger i, BOOL *stop) {
NSLog(@"Place Number: %d", i);
NSLog(@"Place : %@", place.name);
NSLog(@"Place latitude: %@", place.latitude); ALL FINE HERE
NSLog(@"Place longitude: %@", place.longitude);
}];
*/
self.annotations = places;
[self.mapView addAnnotations:places];
}
NSLog は正常にレポートしますが、マップが描画されると、注釈のタイトルと座標がデフォルトで null と (0,0) に設定されます。
- (NSString *) title{
return self.name; //name is an attribute from NSManagedObject subclass.
}
- (CLLocationCoordinate2D) coordinate{
CLLocationCoordinate2D coord;
coord.latitude = [self.latitude doubleValue]; // Longitude and latitude
coord.longitude = [self.longitude doubleValue]; // also dynamic attributes.
return coord;
}
私の推測では、「places」配列を渡すと、どういうわけか各場所を逆参照したと思います。ただし、これらのオブジェクトを強く参照している場所を読んだNSArray
ので、どのようにデータを「失っている」のかよくわかりません。何が起こっているかについてのヒントはありますか?それとも私は間違ったアプローチを取っていますか?