在 coreData 中获取一对多关系并放入 tableview
Posted
技术标签:
【中文标题】在 coreData 中获取一对多关系并放入 tableview【英文标题】:Fetch one-to-many relationships in coreData and put it into a tableview 【发布时间】:2019-03-09 19:49:39 【问题描述】:如何获取核心数据中的一对多关系并将其放入表视图中?
我将此作为用户的数据模型
User CoreData Data Model
这是我的任务数据模型
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】:对Task
中的User
应用反向关系并添加适当的谓词
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]
不鼓励使用创建新结果控制器的方式。懒惰地(一次)创建结果控制器并动态更改谓词和排序描述符。
【讨论】:
以上是关于在 coreData 中获取一对多关系并放入 tableview的主要内容,如果未能解决你的问题,请参考以下文章