搜尋

首頁  >  問答  >  主體

ios - swift 动态添加indexpath,数据类型出错怎么解决?

创建了一个可变数组,往数组里面插入相关节点的时候indexpath

报错信息为:cannot convert value of type 'NSMutalbeArray' to expected argument type '[IndexPath]'

//获取需要修正的indexpath

let indexPathArray = NSMutableArray()
    for i in startPosition...endPosition {
        let tempIndexPath:NSIndexPath = NSIndexPath(row: i, section: 0)
        indexPathArray.add(tempIndexPath)
    }
    //插入或者删除相关节点
    if expand {
        self.insertRows(at: indexPathArray, with: UITableViewRowAnimation.none)
    }
怪我咯怪我咯2771 天前470

全部回覆(2)我來回復

  • 天蓬老师

    天蓬老师2017-04-18 09:49:06

    insertRows(at: _, with: _) 這個方法,第一個參數,是一個 [IndexPath]
    既然你用 swift,就建議使用swift資料型別

    這個[IndexPath] 也就是 Array<IndexPath>
    Array 的定义是 swift 中的一个 struct 也就是Array
    Array 的定義是swift 中的一個struct

    NSMutableArray 是一個objc class ,與struct 是完全不相容的兩個東西

    我推薦的寫法:🎜
        var indexPathArray = [IndexPath]() // 看这里
        for i in startPosition...endPosition {
            let tempIndexPath = IndexPath(row: i, section: 0)
            indexPathArray.append(tempIndexPath) // 和这里
        }
        //插入或者删除相关节点
        if expand {
            self.insertRows(at: indexPathArray, with: .none)
        }

    回覆
    0
  • 黄舟

    黄舟2017-04-18 09:49:06

    let indexPathArray: [IndexPath] = []

    並且,在 Swift 3 中,移除了 NS 前綴,不要使用 NSIndexPath,而是用 IndexPath

    回覆
    0
  • 取消回覆