Как извлечь строку из словаря в массиве в другой массив - PullRequest
0 голосов
/ 04 февраля 2011

привет, у меня есть 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

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

Вы уверены, что это то, что он добавляет?Из вашего кода я бы ожидал, что он добавит массив, содержащий строку 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 голосов
/ 05 февраля 2011

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

for (id nodeContents in [xmlnodes valueForKeyPath:@"nodeChildArray.nodeContent"])
    [iconlocarr addObjectsFromArray:nodeContents];
0 голосов
/ 04 февраля 2011

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

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

, которые рассматривают объект "nodeChildArray" как массив, затем извлекают индекс 0, а затем возвращаемый словарь будет содержать "nodeContent".

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