2014-12-05 46 views
0

我有一個iPhone應用程序,其中有一個元素數組,但我需要每個元素在一個字典內,即。 (字典nsmuatblearray),我不喜歡這樣,但有時它給一些不想要的結果 `將nsarray轉換爲iOS中字典的nsmutablearray?

id objectInstance; 
    NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] init]; 
    for (objectInstance in self.SelectedContacts) 
     [mutableDictionary setObject:objectInstance forKey:@"tag"]; 
     [finalarray addObject:mutableDictionary]; 

` 我做這樣纔能有人點我在哪裏,我錯了?

回答

2

你這樣做的方式是每次覆蓋鍵「標記」的元素。我不完全知道什麼是你要完成,但我懷疑你應該寫這樣的:

for (id objectInstance in self.SelectedContacts) { 
    NSMutableDictionary *mutableDictionary = [[NSMutableDictionary alloc] init]; 
    [mutableDictionary setObject:objectInstance forKey:@"tag"]; 
    [finalarray addObject:mutableDictionary]; 
} 
1

在循環中,您將具有相同標記名稱「tag」的不同對象。所以這裏只有最後一個objectInstance正在被保存,rest全部被下一個替換。

如果您希望保存其中的每一個,請使用新的標籤名更新您的「標籤」。

另一件事,要麼你錯過了以上或者代碼來顯示{真的沒有隻下一行是採取與環路和[finalarray addObject:mutableDictionary];被執行一次的括號{}for呢! !

+0

u能幫助我如何讓它從字典中的數組反向即只是一個數組 – hacker 2014-12-05 13:30:45

+0

您可以使用valueForKey:將返回數組。你也可以享受發佈一個新的問題。 – 2014-12-05 13:32:36

+0

得到它,任何方式感謝您的關注:) – hacker 2014-12-05 13:39:20

0

這裏不需要創建NSMutableDictionary因爲你只是用它來保存在數組沒有進一步的修改是存在的。

另外它會比NSDictionary消耗更多的內存。在未來,如果你想使用

NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithDictionary:object]; 

,反之亦然NSDictionary更新字典對象,你可以轉換到NSDictionaryNSMutableDictionary

現在一個簡單的方法來添加字典數組是這樣的:

NSMutableArray *finalArray = [NSMutableArray new]; 
for (NSDictionary *object in self.SelectedContacts) { 
    [finalArray addObject:@{ @"tag" : object }]; 
} 
0

不是100%肯定從你的問題,如果你想詞典陣列,每個使用相同的密鑰,或用1個字典數組在裏面。

許多字典版本

for (long i = 0; i < [self.SelectedContacts count];i++) 
{ 
    NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary]; 
    [mutableDictionary setObject:[self.SelectedContacts objectAtIndex:i] forKey:@"tag"]; 
    [finalarray addObject:mutableDictionary]; 
} 

1字典版本

NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary]; 

for (long i = 0; i < [self.SelectedContacts count];i++) 
{ 
    NSString *keyString = [NSString stringWithFormat:@"tag_%li",i]; 
    [mutableDictionary setObject:[self.SelectedContacts objectAtIndex:i] forKey:keyString]; 
} 

[finalarray addObject:mutableDictionary]; 

在這1個字典版本的標籤將被tag_之後數組中的舊索引值。

TAG_0 TAG_1 等