NSPredicate 获取第一个数字
NSPredicate getting first digit
我正在尝试使用 NSPredicate
从 CoreData
获取数据。问题是,我只需要比较实体值的第一位:
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
。)
我正在尝试使用 NSPredicate
从 CoreData
获取数据。问题是,我只需要比较实体值的第一位:
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
。)