gpt4 book ai didi

objective-c - 如何按字典中的对象对模型对象进行排序?

转载 作者:行者123 更新时间:2023-12-03 17:45:12 24 4
gpt4 key购买 nike

我有一个从 NSObject 扩展而来的模型对象,称为列。列有两个字段:属性和数据。 Properties 是一个 NSDictionary,它存储任意键/值对,而 data 是一个数组。

列以数组形式出现,我需要按我知道始终位于属性中的值(带有键 ordinal_position 的值)对它们进行排序。

我使用以下代码进行排序,但它总是失败,因为模型对象中没有“ordinal_position”,仅在模型对象的属性中:

NSArray *unsortedArray = [resultStore allValues];
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"ordinal_position" ascending:YES] autorelease];

NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

如何告诉 NSSortDescriptor 在模型对象的字典中查找属性?

最佳答案

您应该定义自己的选择器,返回 NSComparisonResult并实现它:

- (NSComparisonResult)compareByProperty:(Column *)aColumn {
id thisValue = [self valueForKey:@"ordinal_position"];
id otherValue = [self valueForKey:@"ordinal_position"];

return [thisValue compare:otherValue]; // Replace to suit your logic
}

然后使用NSArray方法sortedArrayUsingSelector: :

NSArray *sortedArray = [unsortedArray sortedArrayUsingSelector:@selector(compareByProperty:)];

请注意,您的比较方法必须存在于您的模型对象上,而不是您从中调用它的类上 - 习惯用法是您将某个给定的模型对象 (self) 与另一个模型对象进行比较第一个对象中的模型对象 (aColumn)。

关于objective-c - 如何按字典中的对象对模型对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2014857/

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