【发布时间】:2015-10-21 08:27:30
【问题描述】:
我正在尝试按其“名称”属性的长度对核心数据实体进行排序,该属性是一个字符串。
Location 是一个包含name 属性(字符串)的NSManagedObject。
代码如下:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:[Location entityName]];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@", query]];
[fetchRequest setSortDescriptors:@[
[NSSortDescriptor sortDescriptorWithKey:@"name.length" ascending:YES]]];
[fetchRequest setFetchLimit:3];
NSArray *locations = [context executeFetchRequest:request error:&error];
我希望 name.length KVO 运算符可以工作,但结果排序不正确。
例如:如果模型包含三个Location,其中name 属性是New Orleans、New York 和Newcastle,则query = "New" 的结果数组应该是New York、Newcastle 和New Orleans。
我错过了什么吗?
谢谢, 丹
【问题讨论】:
-
它的字符串比较,所以这可以帮助你stackoverflow.com/questions/24331566/…
-
嗨@abrarulhaq,感谢您的回答,但不幸的是,该解决方案正是我正在做的,使用 KVO 运算符(在这种情况下,用户使用的是长度而不是 intValue)。
-
也许您应该发布完整的搜索 sn-p 以及您的结果和期望。
-
没问题!问题已更新
-
@DAN - 您应该始终为您的 CoreData 问题提供具体的详细信息。有很多活动部件,并且根据您使用它的方式而有所不同。例如,这个问题中缺少的重要部分是您正在使用 SQLite 存储。其他商店的行为不同。
标签: ios core-data nspredicate nsfetchrequest