我正在尝试动态地向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];
我做错了什么?
答案 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];