目前我们有一个包含r,g,b多个值的数据库,分为自己的属性。例如:
r = type float
g = type float
b = type float
每个r,g和b属性都有多个值。 从外部源获取浮点数后,我们要搜索数据库以返回与该浮点数最接近的数字的属性。 (例如,对于r,如果我们得到199的值,将返回最接近199的r值)。
我知道有一些谓词可以像:"text CONTAINS[c] %@"
一样使用,但我没有看到任何最接近值的谓词'。
答案 0 :(得分:0)
您可以在请求中使用NSSortDescriptor(key: "name_key", ascending: true)
。
let request1 = NSFetchRequest<NSFetchRequestResult>() // use correct constructor
let sortDescriptor = NSSortDescriptor(key: "name_key", ascending: true)
let sortDescriptors = [sortDescriptor]
request1.sortDescriptors = sortDescriptors
let predicate1 = NSPredicate(format: "text < %@", value)
request1.predicate = predicate1
// use this request1 to fetch from core data
let request2 = NSFetchRequest<NSFetchRequestResult>() // use correct constructor
request2.sortDescriptors = sortDescriptors
let predicate2 = NSPredicate(format: "text > %@", value)
request2.predicate = predicate2
// use this requst2 to fetch from core data
然后你可以使用predicate
两次:
第一次使用格式text < %@
并使用数组的最后一项。
和
第二次使用格式text > %@
并使用数组的第一项。
比较两次迭代中第一个和最后一个项目与给定值的差异,看看哪个差异较小。这将是最接近的价值。
如果您不知道如何从核心数据中获取数据,则可以关注Fetching Objects