我在将核心数据获取请求应用于过滤器时遇到了麻烦。我已经检查过处理谓词功能的正确实现的其他帖子,但不知何故它对我不起作用。
我研究了网络,并且我想用%@ 来表示字符串。这就是我所做的,因为title(来自实体ITEM的属性)和nameIdentifier都是数据类型字符串。
也许我错过了swift 3改变了一些东西?
这是我的代码:
swift 3
func textViewDidEndEditing(_ textView: UITextView) {
nameIdentifier = textField.text
// save to Entity
let fetchRequest: NSFetchRequest<ITEMS> = ITEMS.fetchRequest()
// check if string has correct value
print ("NameIdentifier: \(nameIdentifier)")
fetchRequest.predicate = NSPredicate(format: "title == %@", nameIdentifier)
do {
if let results = try context.fetch(ITEMS.fetchRequest()) as? [ITEMS] {
for object in results {
// check: results of the predicate fetch requests
print ("Results: \(object)")
}
}
}catch {print ("no results")}
}
但是,我的控制台中的结果根本没有被过滤掉。它获取已存储的所有数据:
控制台输出
NameIdentifier: test1
no results <RISK_ITEMS: 0x6000002a63c0> (entity: RISK_ITEMS; id: 0xd000000001c40000 <x-coredata://7687B389-1346-4C27-9B93-99B324FC28D2/RISK_ITEMS/p113> ; data: {
"title" = test1;
})
no results <RISK_ITEMS: 0x6000002a3120> (entity: RISK_ITEMS; id: 0xd000000001c80000 <x-coredata://7687B389-1346-4C27-9B93-99B324FC28D2/RISK_ITEMS/p114> ; data: {
"title" = test2;
})