Конвертировать в NSArray - iOS SDK - PullRequest
0 голосов
/ 30 декабря 2011

Есть ли место, где я могу прочитать об этом или, может быть, лучше дать мне пример, как изменить этот код на NSArray?

-(void)loadOurAnnotations
 {
 CLLocationCoordinate2D workingCoordinate;

 workingCoordinate.latitude = -37.711455;  //This has to be an integer 
 workingCoordinate.longitude = 176.285013; //This has to be an integer
 MyAnnotation *myLocation1 = [[MyAnnotation alloc] initWithCoordinate:workingCoordinate]; //The pointer has to be set to an array
[myLocation1 setTitle:@"The Palms Cafe"]; //The pointer and the setTitle here
[myLocation1 setSubtitle:@"157 Domain Road - (07) 542 2430"]; //The pointer and the setSubTitle here
[myLocation1 setAnnotationType:MyAnnotationTypeMine]; //again the pointer here

[mapView addAnnotation:myLocation1]; //and the pointer here

}

Все указатели, очевидно, происходят из одного и того же места в массиве, и весь этот фрагмент кода (в фигурных скобках) представляет собой одну запись, поэтому, если я хочу добавить другое место, мне нужно будет скопировать все это снова .

Итак, чего я хочу добиться, это установить это в Plist, чтобы я мог добавлять туда записи, но только -(void)loadOurAnnotations можно было установить в коде один раз и повторить себя. Конечно, если я уроню -(void)loadOurAnnotations, тогда это не проблема, просто так, как у меня сейчас.

Как вы можете узнать по информации, которую я собираю, они будут представлены в виде аннотации на MKMapView.

Любая помощь приветствуется: -)

-Джефф

1 Ответ

1 голос
/ 30 декабря 2011

Если я правильно понял,

Первое: вы читаете свои данные из plist-файла в NSArray через какой-то модальный класс.(Пример ниже «Location» просто модальный класс, и я заполняю его через основные данные)

// Location.h
@interface Location : NSManagedObject

@property (nonatomic, strong) NSNumber * longitude;
@property (nonatomic, strong) NSNumber * latitude;
@property (nonatomic, strong) NSString * name;

@end

// Location.h
@implementation Location

@dynamic longitude;
@dynamic latitude;
@dynamic name;

@end

Второе: в вашем методе «loadOurAnnotations» выполните итерацию всех значений в «locationArray», который содержит объекты Location идля каждого объекта Location я создаю экземпляр PinLocation (подкласс MkAnnotation) и добавляю их в mapView.

for(Location *location in locationArray) {
    NSString *name = [location name];
    CLLocationCoordinate2D coordinate;
    coordinate.latitude = [[location latitude] doubleValue];
    coordinate.longitude = [[location longitude] doubleValue];

    PinLocation *pinLocation = [[PinLocation alloc] initWithName:name coordinate:coordinate];
    [self.mapView addAnnotation:pinLocation];      
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...