我有一个包含这些数据的字典:
(
contact={name="Lion",id="1",photo="simba.png",address="elm street"},
{name="Cat",id="2",photo="halleberry.png",address="attic"},
{name="Bat",id="3",photo="dracule.jpg",address="long way home baby"}
)
从那个NSDictionary,我只获取名称并按字母顺序排序。像这样:
(B={"Bat"}, C={"Cat"}, L={"Lion"})
这是我使用的代码:
NSMutableDictionary* sortedDict = [NSMutableDictionary dictionary];
for (NSDictionary* animal in dataDict[@"user"]){
NSString* name = animal[@"name"];
if (![name length])
continue;
NSRange range = [name rangeOfComposedCharacterSequenceAtIndex:0];
NSString* key = [[name substringWithRange:range] uppercaseString];
NSMutableArray* list = sortedDict[key];
if (!list){
list = [NSMutableArray array];
[sortedDict setObject:list forKey:key];
}
[list addObject:name];
然后,我想问的是。我需要创建一个照片数组,但根据名称按字母顺序排序。我的意思是这样的:
(B="dracule.jpg", C="halleberry.png"...etc)
我也听说使用(B={name="Bat", photo="draggle.jpg"})
会更有效,但我不知道如何制作这样的东西并且不知道如何单独调用它。我需要你的帮助:"(
答案 0 :(得分:1)
您可以轻松地对包含字典值的数组进行排序,请参阅下面的
//Get the contact array.
NSArray *contacts=[dic objectForKey:@"contact"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortedArray = [contacts sortedArrayUsingDescriptors:@[sortDescriptor]];
我希望它有所帮助。