我正在尝试使用CoreData
从NSPredicate
获取数据。问题是,我只需要比较实体值的第一个数字:
class Foo: NSManagedObject {
@NSManaged var value: NSNumber // random number 1xx - 7xx
}
我当前的谓词是比较完整的值:
NSPredicate(format: "value == %d", 5)
我也尝试使用.filter
,但经过测试,它显示它的速度超过我的两倍。
问题:
我该如何更改谓词以便它可以比较value
的第一个数字?
答案 0 :(得分:0)
我不知道检查第一个数字的核心数据谓词
一个数字。对于字符串,您可以使用BEGINSWITH
。
但是如果(在你的情况下)所有数字都有3位数字,那么你可以为给定的范围中的数字创建一个谓词:
let digit = 5 // some number in the range 0...9
let predicate = NSPredicate(format: "value >= %ld AND value <= %ld", digit * 100, digit * 100 + 99)
(请注意Int
参数的正确格式为%ld
。)