2012-03-27 61 views
-1

我有这样的NSDictionary:充分利用NSDictionary的值的NSMutableArray

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"; 
       }; 
      }, 
.................. 

我想要得到的类别名称(如我在这里的照片)到我的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 
+0

**您尝试过什么?**发布您的代码。 – Devang 2012-03-27 10:22:19

+0

我有点困惑你的结构...是categoryName是关键吗? – 2012-03-27 10:43:05

回答

5

在类别中,由Category键引用的对象是一个数组,您可以通过它的内容由括号括起来的事实(...)而不是大括号{ ... }

看你的代码,并将其分解:

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

这对我真的很有帮助。我不知道对象NSDictionary可能是一个列表。 o_o – 2013-02-01 18:29:09

0

答案是错误消息。一个对象,你是从

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

越来越没有选择objectForKey

现在您需要分解代码并进行一些调试,以确定哪里出错。

-1

居然也得到了同样的错误“[NSCFArray objectForKey:]:无法识别的选择发送到实例“

当我查看在运行时从包中加载的plist文件的结构时,我似乎无法使用错误的选择器。问题在于,当我运行应用程序时,它并未从捆绑中拉出原始plist,而是从我的apps目录中拖出一个已保存的plist。因为被保存的plist与我的原始plist有不正确的,完全不同的结构,所以我确实使用了错误的选择器。

+2

这个答案似乎与这个问题没有关系,尤其是因为一个非常明确的答案已经被接受。你是新来的,所以我不会倒下。 – Bryan 2012-09-08 07:31:16