无法索引空缓冲区

无法索引空缓冲区

我明白了
致命错误:无法索引空缓冲区
当我在加载视图后立即开始在集合视图中滚动时。错误将抛出到cellForItemAtIndexPath中的第一行。
this question的答案给了我一些关于如何在加载数据之前不更新集合视图的想法,但是有人能向我解释为什么这是必要的吗?如果posts为空,numberOfItemsInSection应返回0,并且cellForItemAtIndexPath将不会被调用。

var posts:[Post] = []

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    getMyPosts()
}

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return posts.count as Int
}

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    var p = posts[indexPath.row] // Chrashes here
    // Dequeue cell and so on
}

func getMyPosts(){
    self.posts = []
    Alamofire.request(Api.Router.MyPosts).validate().responseObject{
        (request, response, posts: PostCollection?, error) in
        if error == nil {
            self.posts = posts!.getPosts()
            self.collectionView?.reloadData()
        }
    }
}

最佳答案

我想你不需要
重写func numberOfSectionsInCollectionView(collectionView:UICollectionView)->Int{
返回1
}
作为回报1
投入产出0
在您的案例中不需要节。

关于ios - Swift:无法索引空缓冲区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28847520/

10-12 03:48