在coreData中获取一对多关系并将其放入表格视图

时间:2019-03-09 19:49:39

标签: swift core-data one-to-many

如何获取核心数据中的一对多关系并将其放入表视图?

我将此作为用户的数据模型

User CoreData Data Model

这是我用于Task的数据模型

Task CoreData Data Model

如何获取特定用户的任务并将其放入tableView

我尝试使用user.tasks,但是返回了NSSet,并且我不能用它来为表视图创建数据集。

我应该使用谓词来代替吗?这就是我所拥有的

    func handleCoreDataTask(){
    let request: NSFetchRequest<Task> = Task.fetchRequest()
    let dateSorter = NSSortDescriptor(key: "dueDate", ascending: false)
    request.sortDescriptors = [dateSorter]
    //request.predicate = 
    taskResultController = NSFetchedResultsController(fetchRequest: request,
                                                   managedObjectContext: coreDataStack.manageContext,
                                                   sectionNameKeyPath: nil,
                                                   cacheName: nil)
    taskResultController.delegate = self
    do{
        try taskResultController.performFetch()
    }
    catch{
        print("Perform Fetch error: \(error)")
    }
}

1 个答案:

答案 0 :(得分:0)

将逆关系应用于User中的Task并添加适当的谓词

let username = "Foo"
let request: NSFetchRequest<Task> = Task.fetchRequest()
request.predicate = NSPredicate(format: "user.name == %@", username)
let dateSorter = NSSortDescriptor(key: "dueDate", ascending: false)
request.sortDescriptors = [dateSorter]

不鼓励创建新结果控制器的方法。惰性创建一次结果控制器,并动态更改谓词和排序描述符。