2016-09-29 181 views
0

所以我有兩個類定義礦山我的單元格:ListTableViewCell,另一個定義我的表:ListTableView。我試圖從一個分析服務器拉取數據,以顯示在單元格中的兩個uilabels。我在這行代碼中遇到錯誤。UItableview無法將Swift._SwiftDeferredNSArray類型的值轉換爲NSMutableArray

self.Data = array as! NSMutableArray 

這是給我的錯誤 「無法投類型的值 'Swift._SwiftDeferredNSArray'(0x107bc36b8)爲 'NSMutableArray的'(0x105f7fcd0)。」

任何建議來解決這個問題。

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

} 

這是tableview。

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]沒有成員對象。

+3

如果使用Swift數據類型而不是NS *的東西? –

回答

4

我想你在開始使用Swift時遇到了同樣的問題:您仍在使用Obj-C數組。嘗試使用Swift Arrays!

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

這是什麼意思時,它會告訴你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 
+2

我想大多數人都沒有意識到在Objective-C中使用NSArray是必要的,因爲C數組是痛苦的,但是這是Swift,我們現在有了真正的數組,現在不需要再使用NS *了。 :) – Moritz

+0

好吧,所以我嘗試了許多不同的嘗試在迅速陣列廣告它會拋出其他地方的錯誤之後。你有什麼具體的建議嗎? –

+0

@JaradKears不能幫助你,如果我不知道錯誤是什麼或者它們在哪裏被拋出。 – Zolnoor

相關問題