所以我在Core Data中设置了搜索。它从文本字段中获取要搜索的文本,然后尝试使用获取请求中的谓词来搜索它。然后fetchedResultsController应该将它插入tableView。
private func search() {
guard let searchPhrase = searchField.text else { return }
fetchRequest.predicate = NSPredicate(format: "title contains[cd] %@", searchPhrase)
do {
try fetchedResultsController.performFetch()
var stuff = try fetchedResultsController.performFetch()
print(stuff)
print("fetch Successful")
} catch {
fatalError("Error: \(error.localizedDescription)")
}
}
控制台输出显示东西(获取结果)为空:
()
fetch Successful
我有两个标题为“哈利波特1”和“哈利波特2”的实体。 我用“哈利波特”测试了它,控制台输出就像上面那样是空的。
变量以这种方式设置:
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var searchField: UITextField!
var managedObjectContext: NSManagedObjectContext!
lazy var fetchRequest: NSFetchRequest<Book> = NSFetchRequest<Book>(entityName: "Book")
lazy var fetchedResultsController: NSFetchedResultsController<Book> = {
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "date", ascending: false)]
return NSFetchedResultsController<Book>(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
}()
managedObjectContext正在由presentsViewController传递。 那么问题出在哪里?