Я устанавливаю parent как разделы, а child - как число строк в разделе, но при извлечении дочернего элемента из каждого родителя родитель, у которого есть только один дочерний элемент, отображает более одного, мой код должен извлекать данные из базовых данных
var projectsArray: [Project] = []
var foldersArray: [Folders] = []
let fetchRequest = NSFetchRequest<Project>(entityName: "Project")
let sortDescriptor = NSSortDescriptor(key: "pname", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
let fetchFolders = NSFetchRequest<Folders>(entityName: "Folders")
let sortDesc = NSSortDescriptor(key: "name", ascending: true)
fetchFolders.sortDescriptors = [sortDesc]
do {
let newProjectArray = try managedContext.fetch(fetchRequest)
projectsArray = newProjectArray
for newObj in projectsArray{
if let projectId = newObj.id{
fetchFolders.predicate = NSPredicate(format: "pid = %@",projectId)
}
do {
foldersArray = try managedContext.fetch(fetchFolders)
print("The folders are",foldersArray as Any)
}catch{}
}
}catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
projectsArray = []
}
И в моем контроллере я читаю, как,
func numberOfSections(in tableView: UITableView) -> Int {
return (newProjectArray != nil) ? newProjectArray!.count : 0
}
func tableView(_ tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
if newProjectArray![section].isExpandable == true{
return (folders != nil) ? (folders!.count) : 0
}
else{
return 0
}
}
func tableView(_ tableView: UITableView, heightForHeaderInSection
section: Int) -> CGFloat {
return 40
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath:
IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier:
"FoldersCell") as! FoldersCell
if newProjectArray![indexPath.section].isExpandable == true{
let folder = folders![indexPath.row]
cell.projectNameLabel.text = folder.name
}
return cell
}
Предположим, скажем, проект под названием ABC
содержит один folder
, а проект XYZ
содержит folder1,folder2,folder3
при отображенииячейка ABC
отображает folder,folder1,folder2,folder3
, а при отображении ячейки XYZ
отображает folder,folder1,folder2,folder3
, что может быть хорошим решением для этого.