所以我从解析中下载一些图像,然后将它们显示在一个表格中,但有时它会崩溃,有时会崩溃。
1)下载当前用户关注的所有用户名,然后......
2)从解析中下载文件(PFFile),根据发布的时间将其转换为图像。然后,当用户向下滚动或用户查看旧帖子时,表格将填充。
问题在于,有时它会崩溃,有时它会工作并在向下滚动时加载每个图像。我不确定发生了什么,但我认为用户所关注的名单列表并没有全部下载(崩溃),有时它确实下载(工作正常)。这是我的猜测。
错误:"致命错误:数组索引超出范围"
1)下载用户列表:当" Feed"单击按钮
func getFollowingData() {
var followQuery = PFQuery(className: "follow")
followQuery.whereKey("user", equalTo: PFUser.currentUser()!.username!)
followQuery.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let objs = objects {
for name in objs {
self.followArray.append(name.objectForKey("userToFollow") as! String)
}
self.storedFollowArray = self.followArray
self.loadFollowersImages()
}
}
}
}
2)下载用户帖子(姓名和图片)
func loadFollowersImages(){ //downloading posts of people we are following
photoQuery.findObjectsInBackgroundWithBlock { (objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects!{
//username of post
self.resultsHasNameArray.append(object.objectForKey("username") as! String)
//Images of post
var userPicsImageDataToDownload = object["userImageFile"] as! PFFile
userPicsImageDataToDownload.getDataInBackgroundWithBlock({ (userPicData: NSData?, error: NSError?) -> Void in
if error == nil {
if let userPic = UIImage(data: userPicData!){
self.masterUserPicsArray.append(userPic)
self.resultsTable.reloadData()
}
}
})
}
}
}
}
在表格中显示:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//....configure cell
cell.usernameLbl.text = self.resultsHasNameArray[indexPath.row] // works
cell.mainDrawView.image = masterUserPicsArray[indexPath.row] // Crashes and sometimes it works
}
不确定发生了什么。这有发生在其他人身上吗?消除此错误的最佳做法是什么?
答案 0 :(得分:1)
尝试在dispatch_sync
中包装表的重载dispatch_sync(dispatch_get_main_queue(), { Void in
self.masterUserPicsArray.append(userPic)
self.resultsTable.reloadData()
});
编辑:
哪个数组是基于表视图的行数?如果resultsHasNameArray和masterUserPicsArray独立更新,那么确定表中要显示的行数可能会出现问题