Search core data for closest value
目前我们有一个包含多个 r、g、b 值的数据库,这些值被拆分为自己的属性。例如:
1 2 3 | r = type float g = type float b = type float |
每个 r、g 和 b 属性将有多个值。
从外部来源获取浮点数后,我们希望搜索数据库以返回与该浮点数最接近的属性。 (例如,对于 r,如果我们得到一个 199 的值,将返回与 199 最接近的 r 值)。
我知道有一些谓词可以像这样使用:
您可以在请求中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 |
那么你可以使用两次
第一次使用格式
和
第二次使用
将两次迭代中的第一项和最后一项的差异与您的给定值进行比较,看看谁的差异更小。这将是最接近的值。
如果你不知道如何从核心数据中获取数据,你可以关注 Fetching Objects
核心数据入门