所以我有两个类,一个定义我的单元格: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!
}
这是表格 View 。
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 Arrays!
编辑:要回答您最近编辑的问题,您引用的对象不正确。
当它告诉您没有成员对象
时,您是在说:
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
关于ios - UItableview 无法将 Swift._SwiftDeferredNSArray 类型的值转换为 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39776936/