簡體   English   中英

UItableview無法將Swift._SwiftDeferredNSArray類型的值轉換為NSMutableArray

[英]UItableview Could not cast value of type Swift._SwiftDeferredNSArray to NSMutableArray

因此,我有兩個類,一個用於定義我的單元格:ListTableViewCell,另一個用於定義我的表:ListTableView。 我試圖從解析服務器中提取數據以在單元格中顯示為兩個uilabel。 我在這行代碼中遇到錯誤。

 self.Data = array as! NSMutableArray

它給我的錯誤是“無法將類型'Swift._SwiftDeferredNSArray'(0x107bc36b8)的值強制轉換為'NSMutableArray'(0x105f7fcd0)。”

任何解決此問題的建議。

class ListTableViewCell: UITableViewCell {
@IBOutlet weak var name: UILabel!
@IBOutlet weak var team: UILabel!

}

這是表格視圖。

class ListTableViewController: UITableViewController{

var Data: NSMutableArray = NSMutableArray()

func loadData(){

    Data.removeAllObjects()

    let findData:PFQuery = PFQuery(className: "data")
    findData.getFirstObjectInBackground() {(objects: PFObject?, error: Error?) -> Void in
        if !(error != nil){
            for object in [objects] as [PFObject?]{
                self.Data.add(object)
            }
        }
        let array:NSArray = self.Data.reversed() as NSArray
        self.Data = array as! NSMutableArray
        self.tableView.reloadData()
    }

}

override func viewDidAppear(_ animated: Bool) {
    self.loadData()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return Data.count
}

override func tableView(_ tableView: UITableView?, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell:ListTableViewCell = tableView!.dequeueReusableCell(withIdentifier: "listCell", for: indexPath) as! ListTableViewCell

    let listData:PFObject = self.Data.object(at: indexPath.row) as! PFObject

    cell.name.text = listData.object(forKey: "name") as? String


    return cell
}


}

編輯***

更改:

   var Data = [PFObject]()


   Data.removeAllObjects() which I changed to Data.removeAll()
   self.Data.add(object) which I changed to aelf.Data.append(object)

完全刪除了這個

   let array:NSArray = self.Data.reversed() as NSArray
   self.Data = array as! NSMutableArray

我無法解決的最后一個錯誤是這個

let listData:PFObject = self.Data.object(at: indexPath.row) as! PFObject

拋出錯誤,指出[PFObject]沒有成員對象。

我認為您遇到的問題與我開始使用Swift時遇到的問題相同:您仍在使用Obj-C數組。 嘗試使用Swift數組!

編輯:要回答您最近編輯的問題,您引用的對象不正確。

當它告訴您has no member object時,這意味着您在說:

let listData:PFObject = self.Data.object(at: indexPath.row) as! PFObject

此部分專門: self.data.object(at: indexPath.row)

如果引用我上面共享的鏈接,您將看到您引用了swift數組中的對象,如下所示:

let listData:PFObject = self.Data[indexPath.row] as! PFObject

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM