Получение значения из NSDictionary в NSMutableArray - PullRequest
0 голосов
/ 27 марта 2012

У меня есть этот NSDictionary:

Categorys =     {
        Category =         (
                        {
                categoryDescription =                 {
                    text = "  Description";
                };
                categoryIconPath =                 {
                    text = "  7.jpg";
                };
                categoryId =                 {
                    text = "  25";
                };
                categoryName =                 {
                    text = "  My Photos";
                };
                categoryStatus =                 {
                    text = "  ON";
                };
                publicPrivate =                 {
                    text = "  Private";
                };
                userId =                 {
                    text = "  2";
                };
            },
.................. 

Я хочу добавить categoryName (как здесь Мои фотографии) в мой NSArray.

Как я могу это сделать?

Я не могу его получить

Я пробовал этот код с http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/

NSString *category = [[[[xmlDictionary objectForKey:@"Categorys"] objectForKey:@"Category"] objectForKey:@"categoryName"] stringForKey:@"text"];

но выдает ошибку

2012-03-27 15:30:35.320 File[1481:903] -[NSCFArray objectForKey:]: unrecognized selector sent to instance 0x1462c0

Ответы [ 3 ]

4 голосов
/ 27 марта 2012

В категориях объект, на который ссылается ключ категории, является массивом, вы можете сказать по тому, что его содержимое заключено в скобки ( ... ), а не в скобки { ... }.

Глядя на ваш код и разбивая его на части:

NSString *category = [[[[xmlDictionary objectForKey:@"Categorys"] // This is the outermost dictionary 
                            objectForKey:@"Category"]             // This is an NSArray
                                objectForKey:@"categoryName"] stringForKey:@"text"]; 
                                                  // This breaks NSArray doesn't respond to objectForKey:

Немного разбив его, вам нужно:

NSDictionary* categorys = [xmlDictionary objectForKey:@"Categorys"];
NSArray* categoryArray = [categorys objectForKey: @"Category"];
NSDictionary* category = [categoryArray objectAtIndex: i];  // i is the index of the category you want e.g. 0
// etc
0 голосов
/ 08 сентября 2012

Получала ту же ошибку "[NSCFArray objectForKey:]: нераспознанный селектор отправлен на экземпляр"

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

0 голосов
/ 27 марта 2012

Ответ есть в сообщении об ошибке.Один из объектов, которые вы получаете от

NSString *category = [[[[xmlDictionary objectForKey:@"Categorys"] objectForKey:@"Category"] objectForKey:@"categoryName"] stringForKey:@"text"];

Не имеет селектора objectForKey.

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

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