所以基本上就像标题所说有一种方法可以使用NSSortDescriptor
根据特定属性(即字符串)的长度来对NSFetchRequest
的结果进行排序。
例如 结果顺序如下:
A
AA
AAA
AAAA
等等
非常感谢大家!我无法想出这个
这是我尝试的排序描述符:
NSSortDescriptor* sort = [NSSortDescriptor sortDescriptorWithKey:@"food_name" ascending:YES comparator:^(id obj1, id obj2) {
NSInteger len1 = [obj1 length];
NSInteger len2 = [obj2 length];
if (len1 < len2) return NSOrderedAscending;
if (len1 > len2) return NSOrderedDescending;
return NSOrderedSame;
}];
我在其中放了一个断点,似乎没有被调用。
答案 0 :(得分:2)
您可以使用自定义比较器编写排序描述符。积木让它变得非常简单!
[NSSortDescriptor sortDescriptorWithKey:@"stringName"
ascending:YES
comparator:^(id obj1, id obj2) {
NSInteger len1 = [obj1 length];
NSInteger len2 = [obj2 length];
if (len1 < len2) return NSOrderedAscending;
if (len1 > len2) return NSOrderedDescending;
return NSOrderedSame;
}];
答案 1 :(得分:1)
只需将长度用作排序的键,然后使用setSortDescriptors:
添加NSArray *example = [NSArray arrayWithObjects:@"AAAA", @"BBB", @"CC", @"D", nil];
NSSortDescriptor *lengthSorter = [NSSortDescriptor sortDescriptorWithKey:@"length" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:lengthSorter];
NSLog(@"%@", example);
NSLog(@"%@", [example sortedArrayUsingDescriptors:sortDescriptors]);