- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试对 NSDictionaries 的 mutableArray 进行排序,目前我可以通过使用一个 objectForKey 值进行排序来做到这一点,但问题是这些值中的很多可能是相同的,所以我需要另一个 objectForKey 来排序阵列。我想知道,如果第一个 objectForKey 比较返回相同的值,那么我如何才能进行第二个 objectForKey 比较,依此类推。
目前我正在这样做,这很有效..但显然只在一个键上。
[dataArrayOfDictionaries sortUsingComparator:^ NSComparisonResult(NSDictionary *d1, NSDictionary *d2)
{
NSString *n1 = [d1 objectForKey:@"DESCRIPTION"];
NSString *n2 = [d2 objectForKey:@"DESCRIPTION"];
return [n1 localizedCompare:n2];
} ];
在我的调查中,我试过这个 -
[dataArrayOfDictionaries sortUsingComparator:^ NSComparisonResult(NSDictionary *d1, NSDictionary *d2)
{
NSString *n1 = [d1 objectForKey:@"DESCRIPTION"];
NSString *n2 = [d2 objectForKey:@"DESCRIPTION"];
return [n1 localizedCompare:n2];
n1 = [d1 objectForKey:@"ID"];
n2 = [d2 objectForKey:@"ID"];
return [n1 localizedCompare:n2];
} ];
然而,这不起作用,因为它按描述排序,然后完全根据 ID 进行排序,我想要它,如果描述键相同,然后按 ID 键对这些值进行排序。如果这不起作用,则向下键列表,直到它被排序。我希望这是有道理的。任何帮助将不胜感激。
最佳答案
您几乎描述了问题中的解决方案:“如果描述键相同,则按 ID 键对这些值进行排序”。你可以把那个英文句子直接翻译成代码:
[dataArrayOfDictionaries sortUsingComparator:^ NSComparisonResult(NSDictionary *d1, NSDictionary *d2) {
NSString *n1 = [d1 objectForKey:@"DESCRIPTION"];
NSString *n2 = [d2 objectForKey:@"DESCRIPTION"];
NSComparisonResult result = [n1 localizedCompare:n2];
if (result == NSOrderedSame) {
n1 = [d1 objectForKey:@"ID"];
n2 = [d2 objectForKey:@"ID"];
result = [n1 localizedCompare:n2];
}
return result;
}];
您还可以使用两个 NSSortDescriptor
对象执行排序:
[dataArrayOfDictionaries sortUsingDescriptors:[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"DESCRIPTION" ascending:YES
selector:@selector(localizedCompare:)],
[NSSortDescriptor sortDescriptorWithKey:@"ID" ascending:YES
selector:@selector(localizedCompare:)],
nil]];
关于iphone - 具有多个 objectKeys 的 NSMutableArray 中的 NSDictionary 上的 sortUsingComparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838876/
我正在尝试制作一个对象,其中键是年份,值(value)是金额 yearlyCost = {"2016":0,"2017":0,"2018":0,"2019":0} //year(key):amount
我正在尝试对 NSDictionaries 的 mutableArray 进行排序,目前我可以通过使用一个 objectForKey 值进行排序来做到这一点,但问题是这些值中的很多可能是相同的,所以我
我是一名优秀的程序员,十分优秀!