[英]Index beyond bounds while setting up a cell in my table view
在表格視圖中設置單元格時,出現了以下問題:
日志:
*由於未捕獲的異常'NSRangeException'而終止應用程序,原因:'* -[__ NSArrayM objectAtIndex:]:索引5超出范圍[0 .. 4]'***首次拋出調用堆棧:(0x18696afd8 0x1853cc538 0x1868491f0 0x100918a30 0x10091960c 0x18cddf114 0ca 0x18cde431c 0x18cb7c92c 0x18ca97158 0x189c87274 0x189c7bde8 0x189c7bca8 0x189bf7360 0x189c1e3c0 0x189c1ee8c 0x1869189a0 0x186916628 0x186846db4 0x1882b0074 0x18cAffy dy(有)x100caffunc)
internal func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if (tableView == tableview) {
let cell = tableView.dequeueReusableCell(withIdentifier: "table", for: indexPath as IndexPath) as! homeTableViewCell
if (titlearray.count != 0) {
let tit: NSString = self.titlearray[indexPath.row] as! NSString
print("titlearraytitlearray\(titlearray)")
appDelegate.trendseetitarray = titlearray
print("appDelegatetrendseearray\(appDelegate.trendseetitarray)")
cell.treadingtitle.text! = tit as String
}
if (pricearray.count != 0) {
let tit: NSString = self.pricearray[indexPath.row] as! NSString
appDelegate.trendseepricearray = pricearray
cell.trendingprice.text! = tit as String
}
if (addressarraylist.count != 0) {
let tit: NSString = self.addressarraylist[indexPath.row] as! NSString
appDelegate.addressarraylist = addressarraylist
}
if (imagearray.count != 0 && imagearray.count != nil ) {
print(imagearray)
let roomurl=URL(string: "\(imagearray[indexPath.row])")
// print("Room URL:\(roomurl!)")
appDelegate.trendseeimagearray = imagearray
cell.Trendingimg.sd_setImage(
with: roomurl,
placeholderImage: UIImage(named:"no_image.png"),
options: SDWebImageOptions.refreshCached,
completed: { (image1: UIImage?, error1: Error?, cacheType1: SDImageCacheType, imageURL1: URL?) -> Void in
}
)
cell.Trendingimg.clipsToBounds = true;
cell.Trendingimg.sd_setImage(with: roomurl, completed: self.block1)
}
return cell
}
return UITableViewCell()
}
錯誤:
if (addressarraylist.count != 0) {
let tit: NSString = self.addressarraylist[indexPath.row] as! NSString
appDelegate.addressarraylist = addressarraylist
}
發行為圖片:
為什么要檢查Array
的大小是否為非零,而不是測試計數是否至少等於indexPath.row
? 嘗試以下方法:
// array index must be less than the count since the index is zero-based
if indexPath.row < addressarraylist.count {
let tit: NSString = addressarraylist[indexPath.row] as! NSString
appDelegate.addressarraylist = addressarraylist
}
您還應該在展開Optional
值之前測試它們。 強制展開可能會導致運行時崩潰。 像這樣測試它們:
if let tit: NSString = addressarraylist[indexPath.row] as? NSString { ... }
您可以嘗試以下方法:
if self.addressarraylist.count > indexPath.row {
let tit: NSString = self.addressarraylist[indexPath.row] as! NSString
appDelegate.addressarraylist = addressarraylist
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.