值不附加到我的NSMutableDictionary

时间:2011-04-07 11:02:22

标签: iphone xcode nsdictionary nsmutabledictionary

我正在尝试动态地向NSMutableDictionary添加一些值。但是,使用下面的代码,我使用第一个字母作为临时字典的键添加值,然后最后将其添加到我的名称字典中,但它只是覆盖它的相应键的每个值

NSMutableDictionary *dictionary = [[[NSMutableDictionary alloc] init] autorelease];
for (NSString *drugStr in listContents) {
    NSString *substring = [drugStr substringToIndex:1];
    [dictionary setValue:drugStr forKey:substring];     
}
names = [[NSDictionary alloc] initWithDictionary:dictionary];
[dictionary release];

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您应该将NSDictionary定义为使用NSString作为键,将NSArray作为值使用。

然后你应该根据给定的密钥检索你的值。如果结果为nil,那么您需要创建一个新的NSMutableArray,您可以在其上添加上面的值。如果结果不是-nil,请将值添加到数组中。

NSMutableDictionary *dictionary = [[[NSMutableDictionary alloc] init] autorelease];
for (NSString *drugStr in listContents) {
    NSString *substring = [drugStr substringToIndex:1];
    NSMutableArray *valueArray = (NSMutableArray*)[dictionary objectForKey:substring];
     if(valueArray==nil){
         NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:5];
         [newArray addObject:drugStr];
         [dictionary setObject:newArray forKey:substring];
     }else{
         [valueArray addObject:drugStr];
     }

}
names = [[NSDictionary alloc] initWithDictionary:dictionary];
[dictionary release];