如何创建谓词筛选并按整数排序Core Data的字符串属性实体?
解决Core Data中按字符串格式月份标识符筛选实体的问题
实现思路
你的identifier是固定6位字符串格式的年份+月份(比如"202311"),这种格式的字符串字典序比较结果和数字大小比较完全一致,直接用字符串范围判断就能实现需求。
代码实现
方式一:直接构建组合谓词
let startId = "202306" let endId = "202311" let predicate = NSPredicate(format: "identifier >= %@ AND identifier <= %@", startId, endId)
方式二:拆分谓词再组合(更灵活)
let startPredicate = NSPredicate(format: "identifier >= %@", "202306") let endPredicate = NSPredicate(format: "identifier <= %@", "202311") let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [startPredicate, endPredicate])
注意事项
- 务必保证传入的起始、结束标识符严格遵循4位年份+2位月份的格式(比如1月要写"01",不能是"1"),否则字典序比较会出现错误结果。
- 无需将字符串转为数字,Core Data可直接对该格式字符串执行范围查询,性能与数字查询基本一致。
内容的提问来源于stack exchange,提问作者kunass2
相关产品推荐
相关产品推荐

