Общее возвращаемое значение не массив, это словарь. Обратите внимание, что первый символ - {
. Если бы это был массив, это было бы [
.
NSDictionary * json = [string JSONValue];
Теперь вы хотите, чтобы материал находился под клавишей "Метки". Обратите внимание, что это возвращает массив, так как символ после ключа "Placemarks" (и двоеточия) является [
.
NSArray * placemarks = [json objectForKey:@"Placemark"];
Из этого массива вы хотите первый элемент, который является другим NSDictionary
:
NSDictionary *firstPlacemark = [placemarks objectAtIndex:0];
Из этого словаря вам нужен словарь под ключом «Точка»:
NSDictionary *point = [firstPlacemark objectForKey:@"Point"];
Из этого словаря вы хотите получить массив под ключом «координаты»:
NSArray * coordinates = [point objectForKey:@"coordinates"];
На данный момент у вас есть массив, который содержит 3 NSNumber
объектов. Вуаля!
Для опытных пользователей вы, вероятно, можете использовать кодирование ключ-значение, чтобы добраться до него:
NSArray * coordinates = [json valueForKeyPath:@"Placemark[0].Point.coordinates"];
Хотя я бы не советовал, если вы не понимаете, что там происходит.
Это не работает. Не берите в голову! :)