我正在尝试在基于CoreData的iPhone应用程序中实现搜索代码.我不知道该怎么办.该应用程序已经有一个带有谓词的NSFetchedResultsController,用于检索主TableView的数据.在改变太多代码之前,我想确保自己走在正确的道路上.我很困惑,因为很多例子都是基于数组而不是CoreData.
以下是一些问题:
我是否需要第二个NSFetchedResultsController只检索匹配的项目,或者我可以使用与主TableView相同的项目吗?
如果我使用相同的,它是否像清除FRC缓存然后更改handleSearchForTerm:searchString方法中的谓词一样简单?谓词是否必须包含初始谓词以及搜索词,还是记得它首先使用谓词来检索数据?
我如何回到原始结果?我只是将搜索谓词设置为nil吗?难道不会杀掉用于首先检索FRC结果的原始谓词吗?
如果有人使用FRC搜索任何代码示例,我将不胜感激!
iphone search core-data uisearchbar uisearchdisplaycontroller
我正在寻找一个解决这个问题的好方法.我想在我拥有的TableView上实现一些简单的搜索功能.
我发现的所有示例要么使用已弃用,UISearchDisplayController要么使用新的UISearchController但没有NSFetchedResultsController
当前这是使用Core Data/ 填充NSFetchedResultsController
到目前为止,我已经设法让它达到了我可以收集用户搜索字符串的程度(喔!).我知道我可能需要单独FRC执行搜索,但如上所述,到目前为止所有尝试都失败了.
我的班级符合以下协议:
class JobListController: UIViewController, UITableViewDelegate, UITableViewDataSource, NSFetchedResultsControllerDelegate, UISearchBarDelegate{
Run Code Online (Sandbox Code Playgroud)
我无法使用,UITableViewController因为我已经编写了大量现有功能,依赖于这个类,UIViewController
我有两个IBOutlets:
@IBOutlet var tblJobs : UITableView!
@IBOutlet weak var searchBar: UISearchBar!
Run Code Online (Sandbox Code Playgroud)
和我的空数组,以保持我的各种Core Data位和bobs:
var workItems = [Work]()
var filteredWorkItems = [Work]()
Run Code Online (Sandbox Code Playgroud)
以下是我初始化我的方式FRC,以及我MOC和我已经离开的空白,FRC因为我很确定在某些时候需要它:
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
lazy var fetchedResultsController: NSFetchedResultsController = {
let workFetchRequest = NSFetchRequest(entityName: "Work")
let primarySortDescriptor = …Run Code Online (Sandbox Code Playgroud)