Как извлечь массив из словаря, а затем извлечь словарь в этом массиве? - PullRequest
0 голосов
/ 23 февраля 2012

Я хотел бы знать, как извлечь массив из словаря, а затем извлечь словарь из объекта массива.

Я слежу за этим http://ios.biomsoft.com/2011/09/11/simple-xml-to-nsdictionary-converter/

itemDict 
 (
        {
        postID =         {
            text = 26;
        };
        score =         {
            text = 20;
        };
        title =         {
            text = "http://www.google.com quiz";
        };
        url =         {
            text = "http://www.google.com";
        };
    },
        {
        postID =         {
            text = 27;
        };
        score =         {
            text = 10;
        };
        title =         {
            text = "http://www.google.com";
        };
        url =         {
            text = "http://www.google.com";
        };
    },
        {
        postID =         {
            text = 3;
        };
        score =         {
            text = 41;
        };
        title =         {
            text = "http://www.google.com";
        };
        url =         {
            text = "http://www.google.com";
        };
    },
        {
        postID =         {
            text = 35;
        };
        score =         {
            text = 10;
        };
        title =         {
            text = "Sample Video";
        };
        url =         {
            text = "http://www.google.com";
        };
    },
        {
        postID =         {
            text = 43;
        };
        score =         {
            text = 30;
        };
        title =         {
            text = "sample";
        };
        url =         {
            text = "http://www.google.com";
        };
    }
)

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Хорошо, что вы хотите сделать, это следующее.

Из того, что я могу почерпнуть из опубликованной ссылки, у вас есть верхний уровень NSDictionary, который затем содержит XML внутри.Внутри NSDictionary будет объект, который, по вашему примеру, будет itemDict, но, на мой взгляд, больше похож на NSArray.

Отсюда я бы сохранил это NSArray внутри другого.

Каждый объект в этом массиве представляет собой NSDictionary ключей и объектов, соответствующих им.Очевидно, я говорю об этом бите.

{
    postID =         {
        text = 26;
    };
    score =         {
        text = 20;
    };
    title =         {
        text = "http://www.google.com quiz";
    };
    url =         {
        text = "http://www.google.com";
    };
},

Возможно, что-то вроде следующего позволит вам погрузиться достаточно глубоко.

NSArray *itemArray = [xmlDictionary objectForKey:@"itemDict"];

for (NSDictionary *dict in itemArray) {

    NSLog(@"Dictionary: %@", dict);

}

Этот код должен показывать вывод каждого NSDictionary внутриNSArray.Отсюда это простой случай делать все, что вы хотите с NSDictionary.

РЕДАКТИРОВАТЬ

Просто еще один взгляд и подумал, что я бы тоже добавил это.Кажется, что каждый NSDictionary, который мы создали бы с помощью приведенного выше кода, затем имеет ключ для другого объекта, и этот объект хранится в другом словаре.Что-то действительно странное с XML, если вы спросите меня ...

Но обходной путь может быть следующим:

NSArray *itemArray = [xmlDictionary objectForKey:@"itemDict"];

for (NSDictionary *dict in itemArray) {

    NSLog(@"Dictionary: %@", dict);

    for (NSDictionary *dictObject in [dict allKeys]) {

         NSLog(@"Dictionary Object: %@", dictObject);

    }

}

Если это не то, что вы хотите сделатьПожалуйста, отредактируйте ваш вопрос, чтобы я мог исправить свой ответ.

Надеюсь, это поможет!

1 голос
/ 23 февраля 2012

Предположим, вы анализируете его и получаете что-то вроде этого:

    (
//object 0
    {
    postID= 26;
    score = 20;
    title = www.google.com
    url = www.google.com
    },
//object 1
    {
    postID= 27;
    score = 10;
    title = www.google.com
    url = www.google.com
    }...
    )

Это ваш массив.

ObjectAtIndex: 0, в данном примере это:

{
postID= 26;
score = 20;
title = www.google.com
url = www.google.com
}

- словарь.

...