NSSortDescriptor 不起作用
Posted
技术标签:
【中文标题】NSSortDescriptor 不起作用【英文标题】:NSSortDescriptor not working 【发布时间】:2012-10-11 13:20:57 【问题描述】:我有一个名为“TruckNumber”的核心数据实体,它有一个字符串作为它的唯一属性。字符串通常是 1-3 位整数(作为字符串),但有时可以包含字母,例如 TMP9。该属性的名称是“itsNotANumma”。我正在执行获取请求以填充选择器,但它们没有被排序,我不知道为什么。我已经在其他实体上为其他选择器使用了这种精确的技术,并且从来没有遇到过问题。请帮忙...这是相关代码:
// Fetch truck numbers
NSFetchRequest *truckNumberFetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *truckEntity = [NSEntityDescription entityForName:@"TruckNumber" inManagedObjectContext:self.managedObjectContext];
[truckNumberFetchRequest setEntity:truckEntity];
// Sort Descriptor
NSSortDescriptor *truckDescriptor = [[NSSortDescriptor alloc] initWithKey:@"itsNotANumma" ascending:YES];
NSArray *truckSortDescriptors = [[NSArray alloc] initWithObjects:truckDescriptor, nil];
[inventoryFetchRequest setSortDescriptors:truckSortDescriptors];
error = nil;
NSArray *truckResults = [managedObjectContext executeFetchRequest:truckNumberFetchRequest error:&error];
if (error)
NSLog(@"Unresolved error while saving context: %@, %@", error, [error userInfo]);
truckNumbersArray = [[NSMutableArray alloc] init];
for (TruckNumber *truckNumber in truckResults)
[truckNumbersArray addObject:truckNumber.itsNotANumma];
这是我的卡车编号数据模型:
这些是结果:
【问题讨论】:
【参考方案1】:看起来你有一个简单的错字:
[inventoryFetchRequest setSortDescriptors:truckSortDescriptors];
应该是:
[truckNumberFetchRequest setSortDescriptors:truckSortDescriptors];
无论如何我都会假设,通过阅读该代码。
【讨论】:
Grrrrrrrrrr....谢谢。如果允许,我会在 9 分钟内接受作为答案。谢谢。 有时你只见树木不见森林。再次感谢。我会羞愧地低下头 30 秒向你致敬 :-) 没问题!很高兴成为第二双发现错字的眼睛:-)。【参考方案2】:[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES comparator:^(id obj1, id obj2)
return [(NSString*)obj1 compare:(NSString*)obj2 options:NSNumericSearch];
];
如果您的数字在 1-5000 或以上范围内,它会非常完美。
【讨论】:
以上是关于NSSortDescriptor 不起作用的主要内容,如果未能解决你的问题,请参考以下文章