我遇到致命错误:数组索引超出范围。当tempProductPictureArray [count]为nil时,错误来自let profilePicture = tempProductPictureArray[count]
。我想知道我在imageArray上设置了什么错误吗?
var imageArray = [[PFFile]]()
........
.......
.......
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell:MarketTableViewCell = tableView.dequeueReusableCellWithIdentifier("MarketCell") as! MarketTableViewCell
let tempProductPictureArray = imageArray[indexPath.row]
// tempProductPictureArray.count is something like [nil / PFFile(image), nil / PFFile(image) .....]
if tempProductPictureArray.count != 0 {
var hasImage = false
var count = 0
while hasImage == false {
let profilePicture = tempProductPictureArray[count]
if profilePicture != nil {
profilePicture!.getDataInBackgroundWithBlock { data, error in
if error != nil {
self.appDelegate.displayMyAlertMessage((error?.localizedDescription)!, userVI: self)
} else {
cell.productImage.image = UIImage(data: data!)
}
}
hasImage = true
} else if count == tempProductPictureArray.count {
cell.productImage.image = UIImage(named: "Profile Picture")
} else {
count += 1
}
}
} else {
cell.productImage.image = UIImage(named: "Profile Picture")
}
数据源
func refreshResults(){
...
...
...
sameObjectInQuery.findObjectsInBackgroundWithBlock{ (sameObjects: [PFObject]?, error: NSError?) -> Void in
for var i = 0; i <= tempUniqueTitle.count - 1; i++ {
tempProductImage = [PFFile]()
for sameobject in sameObjects! {
if sameobject.objectForKey("detailsImage") != nil {
tempProductImage.append(sameobject.objectForKey("detailsImage") as? PFFile)
} else {
tempProductImage.append(nil)
}
imageArray.append(tempProductImage)
}
....
答案 0 :(得分:1)
跟踪代码,假设tempProductPictureArray
包含一个项目。 tempProductPictureArray.count
将为1,该项目位于偏移0.大概是,它是一个可选的,你想跳过它。
由于count
不等于tempProductPictureArray.count
,因此您需要添加一个来计数并尝试从该位置的数组中获取某些内容(偏移量1)。但是,我们已经说过数组中唯一的元素是偏移0,所以......崩溃。
您需要确保count
始终小于tempProductPictureArray.count
。