2014-12-05 19 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 等