我将父级设置为节,将子级设置为节中的行数,但是在从每个父级获取子级时,只有一个子级的父级显示多个子级,我的代码是从核心数据中获取数据< / p>
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
,因此这可能是一个好的解决方案。
答案 0 :(得分:0)
您不需要获取Folders实体,因为您已经定义了Project与Folders之间的一对多关系,该关系由Core Data处理
lst.index(min(i for i in lst if i > 0))
在其他代码中
strip_namespaces <- function(x){
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- keep comments -->
<xsl:template match="comment()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<!-- remove element prefix -->
<xsl:element name="{local-name()}">
<!-- process attributes -->
<xsl:for-each select="@*">
<!-- remove attribute prefix -->
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
')
xslt::xml_xslt(x, stylesh)
}
以上代码已直接在网络浏览器中更改,并且尚未编译,因此可能并不完整准确,但希望足以帮助您解决此问题