我明白了
致命错误:无法索引空缓冲区
当我在加载视图后立即开始在集合视图中滚动时。错误将抛出到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/