数组中nil的元素会自动删除吗?

时间:2015-12-29 02:40:01

标签: ios arrays swift null

    // MARK: - Reload Photos
    @IBAction func reloadCollectionView(sender: AnyObject) {
        var photosArray = annotation!.photos!
        if selecting {
            // Delete the photos from the photos array

            for path in selectedIndexPaths {
                print("selected path: \(path.row)")

                // Using inverse relationship to delete elements of array
                photosArray[path.row].customAnnotation = nil
            }

            print(photosArray.count)
            collectionView?.performBatchUpdates({ () -> Void in
                self.collectionView?.deleteItemsAtIndexPaths(self.selectedIndexPaths)
                }, completion: nil)
            selectedIndexPaths.removeAll()

        }
    }

    // MARK: UICollectionViewDataSource    
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        print(annotation?.photos!.count)
        return (annotation?.photos!.count)!
    }

上面是一个按钮的简单实现,如果该元素的索引在photosArray数组中,则将selectedIndexPaths的元素设置为nil,然后删除所选的UICollectionViewCells通过DataSource

当我运行程序并说例如,我从21中选择了3 UICollectionViewCells,因此被添加到我的selectedIndexPaths数组中。然后我按reloadCollectionView按钮print(photosArray.count)将返回21,但随后在collectionView:numberOfItemsInSectionprint(annotation?.photos!.count)神奇地返回18

我在操场上测试过,我知道nil仍然算作阵列中的一个元素,所以我对发生的事情感到有些困惑。 DataSource在后​​台有什么东西可以自动删除nil个元素吗?我很困惑,是否有人愿意为我阐明这一点?

0 个答案:

没有答案