2

私は Objective-C と iOS に比較的慣れていないので、NSManagedObjectサブクラスを .xml として使用すると問題が発生しましたMKAnnotationNSManagedObjectすべての「場所」 (サブクラスと)を取得するフェッチ リクエストを実行してMKAnnotation、マップに入力できるようにします。

でそれらをフェッチしても問題ありませviewDidLoadMapController

- (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ので、どのようにデータを「失っている」のかよくわかりません。何が起こっているかについてのヒントはありますか?それとも私は間違ったアプローチを取っていますか?

4

1 に答える 1

0

座標アクセサーは次のように単純です。

- (CLLocationCoordinate2D)coordinate{
    return CLLocationCoordinate2DMake(self.latitude, self.longitude);
}
于 2015-07-21T23:25:54.937 に答える