Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从具有多个节的NSCollectionView中添加/删除项_Swift_Macos_Nscollectionview - Fatal编程技术网

Swift 如何从具有多个节的NSCollectionView中添加/删除项

Swift 如何从具有多个节的NSCollectionView中添加/删除项,swift,macos,nscollectionview,Swift,Macos,Nscollectionview,背景: 我是一个新的开发人员,我不知道去哪里寻求帮助。在过去的一周里,我一直在解决这个问题,但我不知道是什么导致了这个问题。这是我的第一篇帖子,我想成为一名好的会员,所以如果我犯了任何错误,请告诉我,我会很乐意改正的 谢谢大家! 问题: 我正在设置一个包含5个部分的NSCollectionView。有5个按钮可将新项目添加到五个部分,还有一个按钮可删除选定项目。目前,有一个按钮设置 但是,这些项在集合视图中似乎没有正确添加或删除 而且,如果在启动时没有将项目添加到集合视图,应用程序将崩溃 此外,

背景:
我是一个新的开发人员,我不知道去哪里寻求帮助。在过去的一周里,我一直在解决这个问题,但我不知道是什么导致了这个问题。这是我的第一篇帖子,我想成为一名好的会员,所以如果我犯了任何错误,请告诉我,我会很乐意改正的

谢谢大家!

问题:
我正在设置一个包含5个部分的
NSCollectionView
。有5个按钮可将新项目添加到五个部分,还有一个按钮可删除选定项目。目前,有一个按钮设置

但是,这些项在集合视图中似乎没有正确添加或删除

而且,如果在启动时没有将项目添加到集合视图,应用程序将崩溃

此外,在添加新项时,它会向集合视图添加一个额外的项

工作:
我已经阅读了一些
NSCollectionView
教程,如raywenderlich.com、ductran.com、youtube视频、媒体文章、stackoverflow.com帖子和苹果文档

以下是一些更有帮助的链接:





我已经从头到尾逐行调试,从零开始了几次,构建了最简单的集合视图,并逐步添加到其中,从UICollectionView引用

我渴望学习,但
NSCollectionView
上提供的资源似乎很少

代码:
我不确定问题出在哪里,所以我不知道该发布哪个代码

我已将应用程序上载到github:

我认为问题可能发生在
deleteimsatindexpaths
上。删除了错误的项目,如果删除了所有项目,应用程序将崩溃:

func deleteItemsAtIndexPaths(_ indexPaths: [IndexPath]) {
        var indexes = [Int]()
        for indexPath in indexPaths {
            indexes.append(absoluteIndexForIndexPath(indexPath))
        }
        var newWebsites = [Website]()
        for (index, website) in websites.enumerated() {
            if !indexes.contains(index) {
                newWebsites.append(website)
            }
        }
        websites = newWebsites
    }

fileprivate func absoluteIndexForIndexPath(_ indexPath: IndexPath) -> Int {
    var index = 0
    for i in 0 ... (indexPath as NSIndexPath).section {
        index += numberOfWebsitesInSection(i)
    }
    index += (indexPath as NSIndexPath).item
    return index
}

添加/删除:
额外/错误项与
absoluteIndexForIndexPath
相关。它被设置为。。。而不是..<

崩溃:
该崩溃与种类的SupplmentalElementofKind的视图相关。
NSCollectionView
函数需要为
websitesInSection>0设置
if/then

使用5个部分和5个按钮查看
NSCollectionView

一些改进问题的建议,希望能帮助您获得更好的答案和/或更快:1。学习并使用更多的格式化工具,例如,特别是使用反勾号将NSCollectionView作为
NSCollectionView
,这样有助于使问题更容易直观地扫描信息的重要部分2。如果可能,链接到您正在查看的特定教程和文档;3.关于代码,拥有完整的回购协议是很好的,但也许可以猜测哪些代码是相关的,然后发布一些代码。另外,链接到一个特定的提交,以备以后修复。关于,您看到了吗?我对
NSCollectionView
的东西不太熟悉,不知道这是否相关,我只是观察到,这可能是“如果启动时集合视图中没有添加项目,应用程序就会崩溃”。。。也许吧。@lindes,我已经添加了你的建议-看起来确实好多了,谢谢@林德斯,我知道了!写出问题,并与你讨论,有助于澄清问题。谢谢大家!@DavidLittlefield请不要在问题标题中添加“已解决”字样!Stackoverflow不是一个论坛。当你写完你的解决方案后,将帖子作为答案,他们将该答案标记为你问题的解决方案。读和读。