NSFetchRequest 获取具有下一个最接近字符串属性的对象
NSFetchRequest fetch object with next closest string attribute
假设我有 5 个 Alphabet
个对象,它们具有给定字母(字符串类型)的属性 letter
并保存到 Core Data。
Alphabet.letter = "A"
Alphabet.letter = "M"
Alphabet.letter = "G"
Alphabet.letter = "T"
Alphabet.letter = "D"
我可以按以下方式对它们进行排序:
let alphabetFetch = NSFetchRequest(entityName: "Alphabet")
let alphabetSort = NSSortDescriptor(key: "letter", ascending: true)
Alphabet.letter = "A"
Alphabet.letter = "D"
Alphabet.letter = "G"
Alphabet.letter = "M"
Alphabet.letter = "T"
现在我只想检索 "G" 之后最接近 letter
值的 Alphabet 对象(在本例中我想检索字母属性值为 [=22= 的 Alphabet 对象) ]).我将如何构建获取请求以最有效地获取该对象?
除了排序描述符之外,添加一个谓词和一个获取限制
请求:
let request = NSFetchRequest(entityName: "Alphabet")
request.sortDescriptors = [ NSSortDescriptor(key: "letter", ascending: true) ]
request.predicate = NSPredicate(format: "letter > %@", "G")
request.fetchLimit = 1
获取请求returns一个包含单个元素的数组
是第一个匹配的对象(根据排序描述符),如果没有这样的元素,则为空数组
存在。
创建一个带有谓词的 NSFetchRequest
来过滤项目 > "G" 并按升序排序。
let letter = "G"
let letterRequest = NSFetchRequest(entityName:"Alphabet")
letterRequest.predicate = NSPredicate(format: "letter > %@", letter)
letterRequest.sortDescriptors = [NSSortDescriptor(key: "letter", ascending: true)]
letterRequest.fetchLimit = 1
假设我有 5 个 Alphabet
个对象,它们具有给定字母(字符串类型)的属性 letter
并保存到 Core Data。
Alphabet.letter = "A"
Alphabet.letter = "M"
Alphabet.letter = "G"
Alphabet.letter = "T"
Alphabet.letter = "D"
我可以按以下方式对它们进行排序:
let alphabetFetch = NSFetchRequest(entityName: "Alphabet")
let alphabetSort = NSSortDescriptor(key: "letter", ascending: true)
Alphabet.letter = "A"
Alphabet.letter = "D"
Alphabet.letter = "G"
Alphabet.letter = "M"
Alphabet.letter = "T"
现在我只想检索 "G" 之后最接近 letter
值的 Alphabet 对象(在本例中我想检索字母属性值为 [=22= 的 Alphabet 对象) ]).我将如何构建获取请求以最有效地获取该对象?
除了排序描述符之外,添加一个谓词和一个获取限制 请求:
let request = NSFetchRequest(entityName: "Alphabet")
request.sortDescriptors = [ NSSortDescriptor(key: "letter", ascending: true) ]
request.predicate = NSPredicate(format: "letter > %@", "G")
request.fetchLimit = 1
获取请求returns一个包含单个元素的数组 是第一个匹配的对象(根据排序描述符),如果没有这样的元素,则为空数组 存在。
创建一个带有谓词的 NSFetchRequest
来过滤项目 > "G" 并按升序排序。
let letter = "G"
let letterRequest = NSFetchRequest(entityName:"Alphabet")
letterRequest.predicate = NSPredicate(format: "letter > %@", letter)
letterRequest.sortDescriptors = [NSSortDescriptor(key: "letter", ascending: true)]
letterRequest.fetchLimit = 1