gpt4 book ai didi

iphone - 具有多个 objectKeys 的 NSMutableArray 中的 NSDictionary 上的 sortUsingComparator

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:37 26 4
gpt4 key购买 nike

我正在尝试对 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com