NSPredicate获得第一位数

时间:2017-01-11 06:15:44

标签: swift core-data nspredicate

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

class Foo: NSManagedObject {

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

}

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

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

我也尝试使用.filter,但经过测试,它显示它的速度超过我的两倍。

问题:
我该如何更改谓词以便它可以比较value的第一个数字?

1 个答案:

答案 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。)