Swift CoreData实体和属性

Swift CoreData实体和属性,swift,uitableview,core-data,uitableviewsectionheader,Swift,Uitableview,Core Data,Uitableviewsectionheader,我是swift的新手,我刚刚了解了核心数据,我正试图在我目前正在从事的项目中实施它 之前我正在接受一个结构 struct Course : Decodable { let CourseName : String; let Requirements : String; } struct AllCourses : Decodable { let ProgramName : String let Courses : [Course] } 我尝试创建两个实体并创建了父子关系,我成功地保存了它们,但

我是swift的新手,我刚刚了解了核心数据,我正试图在我目前正在从事的项目中实施它

之前我正在接受一个结构

struct Course : Decodable {
let CourseName : String;
let Requirements : String;
}

struct  AllCourses : Decodable {
let ProgramName : String
let Courses : [Course]
}
我尝试创建两个实体并创建了父子关系,我成功地保存了它们,但是当我使用节标题创建tableview时,我无法创建嵌套数组


如果我想要一个带有程序名的节,我的属性和实体会是什么样子。

这是将
nsfetchresultscoller
与您的
UITableViewController
结合使用的绝佳机会

假设您的模型具有以下内容:

您的代码将如下所示:

导入UIKit
导入CoreData
类ViewController:UITableViewController{
惰性变量fetchedResultsController:NSFetchedResultsController={
let fetchRequest=NSFetchRequest(entityName:“课程”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“program.name”,升序:true)]
让moc=*您的上下文*
let controller=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:moc,sectionNameKeyPath:“program.name”,cacheName:nil)
//controller.delegate=self
返回控制器
}()
重写func numberOfSections(在tableView:UITableView中)->Int{
guard let sections=self.fetchedResultsController.sections-else{
返回0
}
返回节数
}
重写func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
guard let sections=self.fetchedResultsController.sections-else{
返回0
}
返回节[section]。numberOfObjects
}
重写func tableView(tableView:UITableView,titleForHeaderInSection:Int)->String{
guard let sections=self.fetchedResultsController.sections-else{
返回“”
}
返回节[section].indexTitle
}
重写func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
让cell=tableView.dequeueReusableCell(标识符为“CourseCell”)作为!UITableViewCell
cell.course=self.fetchedResultsController.object(位于:indexPath)
返回单元
}
}

当您向获取的结果控制器提供sectionNameKeyPath时,它将自动“分组”结果。您可以通过在控制器上使用谓词来进一步限制结果。

这是将
NSFetchResultsController
与您的
UITableViewController
结合使用的绝佳机会

假设您的模型具有以下内容:

您的代码将如下所示:

导入UIKit
导入CoreData
类ViewController:UITableViewController{
惰性变量fetchedResultsController:NSFetchedResultsController={
let fetchRequest=NSFetchRequest(entityName:“课程”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“program.name”,升序:true)]
让moc=*您的上下文*
let controller=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:moc,sectionNameKeyPath:“program.name”,cacheName:nil)
//controller.delegate=self
返回控制器
}()
重写func numberOfSections(在tableView:UITableView中)->Int{
guard let sections=self.fetchedResultsController.sections-else{
返回0
}
返回节数
}
重写func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{
guard let sections=self.fetchedResultsController.sections-else{
返回0
}
返回节[section]。numberOfObjects
}
重写func tableView(tableView:UITableView,titleForHeaderInSection:Int)->String{
guard let sections=self.fetchedResultsController.sections-else{
返回“”
}
返回节[section].indexTitle
}
重写func tableView(tableView:UITableView,cellForRowAt indexath:indexPath)->UITableViewCell{
让cell=tableView.dequeueReusableCell(标识符为“CourseCell”)作为!UITableViewCell
cell.course=self.fetchedResultsController.object(位于:indexPath)
返回单元
}
}

当您向获取的结果控制器提供sectionNameKeyPath时,它将自动“分组”结果。您可以通过在控制器上使用谓词来进一步限制结果。

检查以下线程检查以下线程检查以下线程检查以下线程检查以下线程太棒了!我要试试看!非常感谢。伟大的我要试试看!非常感谢。