ios - 在Swift中使用NSPredicate显示来自核心数据的结果

标签 ios uitableview core-data nspredicate

我的viewDidLoad()中有以下代码

    fetchedResultsController = NSFetchedResultsController(fetchRequest: FetchRequest("Teams", key: "team_name"), managedObjectContext: managedObjectContext!, sectionNameKeyPath: nil, cacheName: nil)
    fetchedResultsController?.delegate = self
    fetchedResultsController?.performFetch(nil)

以及我的TableView cellForRowAtIndex中的以下代码:
        var cell = teamView.dequeueReusableCellWithIdentifier("team_cell", forIndexPath: indexPath) as! TeamCellSettings

        if let cellContact = fetchedResultsController?.objectAtIndexPath(indexPath) as? Team {
            //create cell here
        }

    return cell

我已在线阅读有关如何使用NSPredicate的信息,但似乎无法使它正常工作。我的目标是基于行属性的内容,使用分段控件在UITableView中显示的结果之间切换。因此,如果我的实体X具有名为A的属性,A将存储1或0,那么基本上我需要分段控件在所有之间切换,以便在结果A中包含1或在A中包含0

我的创造力写作技巧不是最好的。希望你能理解我的目标。谢谢。

最佳答案

谓词需要添加到获取请求中,例如:

let request = NSFetchRequest(entityName: "Your entity name")
let predicate = NSPredicate(format: "A == %d", 1)
request.predicate = predicate

fetchedResultsController = NSFetchedResultsController(
  fetchRequest: request, 
  managedObjectContext: managedObjectContext!, 
  sectionNameKeyPath: nil, 
  cacheName: nil)

谓词的作用取决于您的目标。在下一步中,您需要在更改分段控件中的所选项目时更新获取请求并重新加载数据。在分段控件更改时调用的IBAction中,获取sender.selectedSegmentIndex并根据索引创建新的谓词。
要重新获取的代码如下所示:
迅捷2
        fetchedResultsController.fetchRequest.predicate = NSPredicate(format: "A = %d", some_int_goes_here)
        do {
            try fetchedResultsController.performFetch()
        }
        catch let error as NSError {
            NSLog("%@", error.localizedDescription)
        }
        catch {
            fatalError()
        }
        tableView.reloadData()

如果您使用Swift 1.2,则当然可以省略以下错误处理:
fetchedResultsController.fetchRequest.predicate = NSPredicate(format: "A = %d", some_int_goes_here)
fetchedResultsController.performFetch()
tableView.reloadData()

关于ios - 在Swift中使用NSPredicate显示来自核心数据的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31330488/

相关文章:

ios - 使用 2 个不同的 segues 退出模态视图

ios - 如何快速将按钮置于 Storyboard上方的桌面 View 中央?

ios - 隐藏 UIRefreshControl iOS 的最佳方法是什么

iphone - 将 PDF 文件插入核心数据?

cocoa - 将非模型节点添加到 NSTreeController

objective-c - 有没有办法使用 NSPredicate 来发出 NSDeleteRequest 与 Core Data 中的 NSFetchRequest ?

objective-c - 将 NSString 转换为 NSDate 的问题

ios - 当应用程序进入前台时,如何从在 uiwebview 中打开的 html 页面调用 javascript 函数?

iphone - 在 NSString 的特定行分割字符串

ios - Swift TableView 重新加载但单元格在单击之前保持不变