1
我做具有以下謂詞的NSFetchRequest
:排序的NSArray通過NSOrderedSet
[NSPredicate predicateWithFormat:@"index IN %@", indexes];
...其中indexes
是數字的NSOrderedSet
。
這給了我一個具有給定索引的「隨機排序」對象數組。我需要對此進行排序,以便對象以與排序集中相同的順序顯示。
什麼是最有效的方法來做到這一點?
更新
下面是根據馬丁的r答案類別:
@implementation NSArray (SortUsingValues)
- (NSArray *)sortedArrayUsingValues:(NSOrderedSet *)values keyPath:(NSString *)keyPath
{
NSAssert([values isKindOfClass:[NSOrderedSet class]], nil);
NSAssert([keyPath isKindOfClass:[NSString class]], nil);
return [self sortedArrayUsingComparator:^NSComparisonResult(id object, id otherObject) {
id value = [object valueForKeyPath:keyPath];
id otherValue = [otherObject valueForKeyPath:keyPath];
NSUInteger indexOfValue = [values indexOfObject:value];
NSUInteger indexOfOtherValue = [values indexOfObject:otherValue];
if (indexOfValue > indexOfOtherValue) return NSOrderedDescending;
else if (indexOfValue < indexOfOtherValue) return NSOrderedAscending;
else return NSOrderedSame;
}];
}
@end
謝謝,這正是我一直在尋找的。順便說一句,我剛剛根據你的答案更新了我的問題。 – 2013-03-25 15:35:09