我正在尝试合并来自 this link 的代码进入我自己的应用程序,同时使用我自己的字典。然而,我遇到了几个问题。
我的代码生成了这种字典(因为我正在使用 Web 服务从 MySQL 数据库获取此数据):
{audiences = ({
name = ABDUL;
id = 1;
},{
name = ELSA;
id = 2;
},...etc)}
但是,我想要这样的字典:
audiences = @{@"B" : @[@"Bear", @"Black Swan", @"Buffalo"],
@"C" : @[@"Camel", @"Cockatoo"],
@"D" : @[@"Dog", @"Donkey"]};
在我的例子中,它看起来像这样:
audience = @{@"A":@[@"Abdul"],
@"E":@[@"Elsa"]};
总结一下我的问题:
1) 如何仅使用 name
(无 id
)创建 NSDictionary
?
2) 包含首字母的字典
感谢您的帮助,我是 Xcode 和 Objective-C 的新手,所以如果我问的是菜鸟问题,请原谅我。另外,请忍受我糟糕的英语。提前致谢。
最佳答案
因此,您从网络服务收到的初始数据结构是(在 Cocoa 中重新表达):
NSDictionary* data = @{ @"audiences" : @[
@{ @"name" : @"ABDUL",
@"id" : @1 },
@{ @"name" : @"ELSA",
@"id" : @2 },
] };
您可以像这样构建您描述的数据结构:
NSMutableDictionary* audience = [NSMutableDictionary dictionary];
for (NSDictionary* person in data[@"audiences"])
{
NSString* name = person[@"name"];
if (![name length])
continue;
NSRange range = [name rangeOfComposedCharacterSequenceAtIndex:0];
NSString* key = [[name substringWithRange:range] uppercaseString];
NSMutableArray* list = audience[key];
if (!list)
{
list = [NSMutableArray array];
[audience setObject:list forKey:key];
}
[list addObject:name];
}
关于ios - 使用初始名称创建 NSDictionary 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25519024/