2012-10-16 74 views
0

我具有其中我有成員的細節的應用程序作爲dictionary.i想從我有是這樣的dictionary.The響應添加與特定的對象陣列,如何用字典中的特定項目創建數組?

{ 
    500 =  { 
     name = baddd; 
     status = "<null>"; 
    }; 
    511 =  { 
     name = abyj; 
     status = "Hi all...:-)"; 
    }; 
    512 =  { 
     name = abyk; 
     status = fdffd; 
    }; 
} 

我想創建一個只有name的結果的數組。我曾嘗試過這樣的

for(int i=0;i<=self.currentChannel.memberCount;i++) 
{ 

    NSString *name=[NSString stringWithFormat:@"%@",[self.currentChannel.members objectForKey:@"name"]] ; 
    NSLog(@"%@",name); 
    [searchfriendarray addObject:name]; 


} 
NSLog(@"%@",searchfriendarray); 

但添加的值爲空。有誰能夠幫助我 ?

+0

您的代碼的問題似乎是,您不要在任何地方使用數組索引。要枚舉字典,使用'for ... in'語法是最簡單的。看到我的答案。 – Krumelur

回答

1

遍歷objectEnumerator獲取值(內部詞典)。然後,只需將「name」的值添加到結果數組中。例如(假定該詞典被命名爲d):

NSDictionary* d = ... 
NSMutableArray* array = [NSMutableArray arrayWithCapacity:d.count]; 
for(NSDictionary* member in d.objectEnumerator) { 
    [array addObject:[member objectForKey:@"name"]]; 
} 
+0

如果你編輯我的代碼,它會很好,所以我沒有得到你? – hacker

+0

我很難說你應該如何編輯你的代碼,因爲我不知道你的類是如何定義的。一般來說,上面的'd'不管你的字典是什麼(我的猜測是'self.currentchannel.members',對吧?) – Krumelur

0

克魯梅爾爾比我更快;)他是正確的saing,你應該首先遍歷字典中的值。在你的實現中,你不會在某個地方引用你的計數器變量,所以NSString的名字在每次迭代中都是一樣的。

0

這可能會幫助你..

// here you can get Array of Dictionary First 
    NSArray *arr = [[NSArray alloc] initWithContentsOfFile:@""]; // get array first from your response 
    NSDictionary *temp = [[NSDictionary alloc] initWithDictionary:self.currentChannel.members]; 
    for(int i=0;i<=self.currentChannel.memberCount;i++) 
    { 

     NSDictionary *temp = [arr objectAtIndex:i]; 
     NSString *name=[NSString stringWithFormat:@"%@",[temp objectForKey:@"name"]] ; 
     NSLog(@"%@",name); 
     [searchfriendarray addObject:name]; 


    } 
    NSLog(@"%@",searchfriendarray); 

感謝。