相关疑难解决方法(0)

如何使用UISearchDisplayController/UISearchBar过滤NSFetchedResultsController(CoreData)

我正在尝试在基于CoreData的iPhone应用程序中实现搜索代码.我不知道该怎么办.该应用程序已经有一个带有谓词的NSFetchedResultsController,用于检索主TableView的数据.在改变太多代码之前,我想确保自己走在正确的道路上.我很困惑,因为很多例子都是基于数组而不是CoreData.

以下是一些问题:

  1. 我是否需要第二个NSFetchedResultsController只检索匹配的项目,或者我可以使用与主TableView相同的项目吗?

  2. 如果我使用相同的,它是否像清除FRC缓存然后更改handleSearchForTerm:searchString方法中的谓词一样简单?谓词是否必须包含初始谓词以及搜索词,还是记得它首先使用谓词来检索数据?

  3. 我如何回到原始结果?我只是将搜索谓词设置为nil吗?难道不会杀掉用于首先检索FRC结果的原始谓词吗?

如果有人使用FRC搜索任何代码示例,我将不胜感激!

iphone search core-data uisearchbar uisearchdisplaycontroller

145
推荐指数
6
解决办法
5万
查看次数

Swift使用NSFetchedResultsController和UISearchBarDelegate

我正在寻找一个解决这个问题的好方法.我想在我拥有的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)

core-data uisearchbar ios swift

3
推荐指数
1
解决办法
2433
查看次数