致命错误:索引超出范围:Swift

Posted

技术标签:

【中文标题】致命错误:索引超出范围:Swift【英文标题】:fatal error : Index Out of Range : Swift 【发布时间】:2017-08-30 14:05:23 【问题描述】:

我有 JSON 图像。

let imagestring : String? = (myData as AnyObject).value(forKey: "Post_mid_image") as? String

if imagestring != nil
    let imageTrueString = "https://www.zdoof.com/" + imagestring!
    self.imageStringArray.append(imageTrueString )
    print(self.imageStringArray)

当我试图把它放在表格视图上时:

let myImage = cell.viewWithTag(30) as! UIImageView
let myImageString : String? = imageStringArray[indexPath.row]

if myImageString != nil
    let ImageUrl = URL.init(string: myImageString!)

    myImage.kf.setImage(with: ImageUrl)
 

它显示如下错误:

致命错误:索引超出范围

我的代码有什么问题?

【问题讨论】:

您没有发布您的 numberOfRowsForSection: 方法的代码,但这里发生的情况是您正试图显示一个实际上并不存在于您的 imageStringArray 中的行。跨度> 那么,这里怎么办,请帮忙 你能贴出返回表格行数的代码吗? 【参考方案1】:

你这样的行数方法

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return imageStringArray.count
    

并使用 if let 避免强制转换

if let myImage = cell.viewWithTag(30) as? UIImageView 
    if let myImageString = imageStringArray[indexPath.row] as? String 
        let ImageUrl = URL.init(string: myImageString!)
        myImage.kf.setImage(with: ImageUrl)

    


更新:-

if indexPath.row < imageStringArray.count 
    if let myImageString = imageStringArray[indexPath.row] as? String 
        let ImageUrl = URL.init(string: myImageString!)
        myImage.kf.setImage(with: ImageUrl)

    

【讨论】:

我正在尝试展示一些 cmets(可能有 cmets 和图像/只有评论)。如果我写 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int return imageStringArray.count 它只显示有图像的评论 答案已更新

以上是关于致命错误:索引超出范围:Swift的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:索引超出范围:Swift

(Swift) 致命错误:索引超出范围

Xcode Swift:致命错误:索引超出范围

Swift TableView ImageView + Label = 致命错误:索引超出范围

Swift CollectionView(致命错误:索引超出范围)

致命错误:注册后索引超出范围(Firebase、Swift)