2012-03-27 88 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