2011-02-04 2 views
0

hello У меня есть NSMutableArray iconlocarr. У меня также есть еще один массив, содержащий словарных данных, называемый xmlnodes который выглядит следующим образом:Как извлечь строку из словаря в массив в другой массив

{ 
    nodeChildArray = (
     { 
      nodeContent = "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png"; 
     } 
    ); 
    nodeName = weatherIconUrl; 
} 

Я пытаюсь добавить данные nodeContent (значок URL) в мой iconlocarr массив:

[iconlocarr addObject:[[[xmlnodes objectAtIndex:i] objectForKey:@"nodeChildArray"] valueForKey:@"nodeContent"]]; 

У меня есть проблема является то, что приведенный выше код добавляет следующие данные:

(
    { 
     nodeContent = "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png"; 
    } 
) 

, а также данные, которые я на самом деле хочу

"http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png" 

Как добавить данные nodeContents, а не остальные? Намерение состоит в том, чтобы передать данные в NSURL

+0

Слово «данные» означает что-то конкретное в какао и Cocoa Touch: Объект NSData (или эквивалентного элемента в PLIST). Вы не должны вызывать ничего другого, включая строки или словари или массивы, «данные». –

ответ

0

Попробуйте вместо этого:

iconlocarr addObject:[[[[xmlnodes objectAtIndex:i] objectForKey:@"nodeChildArray"] objectAtIndex:0] objectForKey:@"nodeContent"]];

которые рассматривают объект «nodeChildArray» как массив, а затем извлечь индекс 0, а затем возвращается словарь будет содержать «nodeContent» ,

+0

Это возвращает тот же результат, что и мой код, я что-то пропустил? вывод состоит из списка всех узлов, а затем списка всего содержимого. также я считаю, что выше не хватает квадратной скобки спереди? – coasty

+0

вы можете отправить NSLog из «xmlnodes»? NSLog (@ "% @", XMLNodes) – viggio24

+0

Вот некоторые из бревна { nodeChildArray = ( { nodeContent = "http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0002_sunny_intervals.png"; } ); nodeName = weatherIconUrl; }, { nodeChildArray = ( { nodeContent = «http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.PNG "; } ); NODENAME = weatherIconUrl; }, – coasty

1

Вы уверены, что это то, что он добавляет? Из вашего кода я ожидаю, что он добавит массив, содержащий строку nodeContent, например.

(
    @"http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0004_black_low_cloud.png; 
) 

Проблема здесь вы пытаетесь извлечь одно значение из массива (ваш nodeChildArray значение), и вы не определили, как именно вы хотите, чтобы сделать это. Вам нужен первый элемент массива? Последний? Случайный предмет? Вы должны это понять. В любом случае, вы можете использовать

NSArray *ary = [[xmlnodes objectAtIndex:i] objectForKey:@"nodeChildArray"]; 

, чтобы получить значение nodeChildArray, а затем определить, как именно вы хотите, чтобы выбрать, какое значение внутри него, чтобы извлечь содержимое из.

+0

Большое спасибо, ладно, я должен был быть более конкретным. У меня есть 5 значков погоды. для каждого дня недели я хочу вернуть только данные http: //, содержащиеся в поле nodeContent, в каждом массиве nodeChild, а не что-то еще. Вышеуказанное находится в цикле for. Конечно, я должен иметь возможность нацеливать это поле в каждом Objectindexed? т.е. захватить данные за каждый день, а не разделить процесс на два? существует только один nodeContent для каждого nodechildarray в индексе. – coasty

0

КВЦ должен справиться с этим легко:

for (id nodeContents in [xmlnodes valueForKeyPath:@"nodeChildArray.nodeContent"]) 
    [iconlocarr addObjectsFromArray:nodeContents]; 
+0

Спасибо, хотя я получу данные в скобках ( «http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png») , что является одной из проблем, которые я пытался избежать, поскольку это должно быть подходящим для NSURL. Если я запускаю NSString * url = [[[[xmlnodes objectAtIndex: i] objectForKey: @ "nodeChildArray"] objectAtIndex: 0] valueForKey: @ "nodeContent"]; в цикле и NSLOG вывод я получаю именно то, что хочу, но мне нужно содержимое в массиве. – coasty

Смежные вопросы