NSPredicate 获取第一个数字

NSPredicate getting first digit

我正在尝试使用 NSPredicateCoreData 获取数据。问题是,我只需要比较实体值的第一位:

class Foo: NSManagedObject {

    @NSManaged var value: NSNumber // random number 1xx - 7xx

}

我当前的谓词正在比较完整的值:

NSPredicate(format: "value == %d", 5)

我也尝试过使用 .filter,但在测试后,它显示我的速度慢了两倍多。

问题:
我应该如何更改我的谓词以便它可以比较 value?

的第一个数字

我不知道检查第一个数字的 Core Data 谓词 的一个数字。对于 strings 你可以使用 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。)