#iphone #xcode
#iPhone #xcode
Вопрос:
У меня есть следующий список:
<plist version="1.0">
<array>
<dict>
<key>description</key>
<string>Dodge Viper</string>
<key>title</key>
<string>Bil</string>
<key>longitude</key>
<real>19.027054</real>
<key>latitude</key>
<real>36.129471</real>
<key>show</key>
<true/>
</dict>
<dict>
<key>description</key>
<string>Dodge RAM</string>
<key>title</key>
<string>Truck</string>
<key>longitude</key>
<real>1.026062</real>
<key>latitude</key>
<real>46.128918</real>
<key>show</key>
<true/>
</dict>
<dict>
<key>description</key>
<string>Tøf tøf</string>
<key>title</key>
<string>Lastbil</string>
<key>longitude</key>
<integer>0</integer>
<key>latitude</key>
<real>56.128918</real>
<key>show</key>
<true/>
</dict>
<dict>
<key>description</key>
<string>Black Pearl</string>
<key>title</key>
<string>Piratskib</string>
<key>longitude</key>
<integer>0</integer>
<key>latitude</key>
<real>25.128918</real>
<key>show</key>
<false/>
</dict>
</array>
</plist>
И у меня есть базовый контроллер mapview.
Я хотел бы создать аннотации для каждого элемента, используя клавишу долготы и высоты.
Проблема в том, что когда я пытаюсь, у меня возникают проблемы с «double» -> Я не знаю, как прочитать мое значение из списка как double, я попытался преобразовать его, но, похоже, это не работает.
Мой код в контроллере представления карты выглядит следующим образом:
В настоящее время существует проблема с «double latitude2 = [str objectForKey:@»latitude»];» но я все равно включил строку, чтобы показать свои намерения.
-(void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:
@"enheder" ofType:@"plist"];
NSMutableArray *array2 = [[NSMutableArray alloc] initWithContentsOfFile:path];
for (NSString *str in array2) {
double latitude2 = [str objectForKey:@"latitude"];
[mapview setMapType:MKMapTypeHybrid];
[mapview setZoomEnabled:YES];
[mapview setScrollEnabled:YES];
MKCoordinateRegion region = { {0.0, 0.0 }, {0.0, 0.0 } };
region.center.latitude = latitude2;
region.center.longitude = 9.027044;
region.span.longitudeDelta = 0.001f;
region.span.latitudeDelta = 0.001f;
[mapview setRegion:region animated:YES];
NewClass *ann = [[NewClass alloc] init];
ann.title = @"Title";
ann.subtitle = @"Sub";
ann.coordinate = region.center;
[mapview addAnnotation:ann];
}
}
Я очень новичок, когда дело доходит до программирования для iPhone, поэтому, скорее всего, я пропустил что-то фундаментальное. Но любая помощь была бы очень признательна.
Ответ №1:
Ваш plist содержит массив словаря, а не массив строк. измените свой код таким образом
for (NSDictionary *dict in array2)
double latitude2 = [[dict objectForKey:@"latitude"] doubleValue];
Ответ №2:
for (NSString *str in array2) {
в этом утверждении NSString заменить на NSDictionary я думаю, что это сработает
Комментарии:
1. Да, plist — это массив словарей, а не массив строк.