2016-09-29 1 views
0

に型Swift._SwiftDeferredNSArrayの値をキャストできませんでしたので、私は1つが地雷私のセルを定義する2つのクラスがあります:ListTableViewCellを、そしてもう一つは、私のテーブルを定義します:ListTableView。私はセル内の2つのuilabelsとして表示する解析サーバーからデータを取得しようとしています。私はこのコード行でエラーに遭遇しています。それは私にエラーを与えているはのUITableViewはNSMutableArrayの

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 
} 


} 

EDIT ***変更

:完全に私は修正することはできません。この

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

この最後のエラーを削除

var Data = [PFObject]() 


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

はこの1

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

これは[PFObject】なしメンバオブジェクトを持っていないというエラーをスローします。

+3

NS *の代わりにSwiftデータ型を使用するとどうなりますか? –

答えて

4

私はSwiftで始めたときと同じ問題があると思います。あなたはまだObj-C配列を使っています。 Swift Arrays!

EDIT使用してみてください:あなたの最近編集した質問に答えるために、あなたは間違ってオブジェクトを参照しています。

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

この部分は、特に:self.data.object(at: indexPath.row)

あなたは、私が上記の共有リンクを参照する場合、あなたはあなたがオブジェクトを参照していることがわかります、それはそれはあなたを伝えるときhas no member objectは、あなたが言っていることである意味は何

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

私は大抵の人がObjective-CではNSArrayの使用が必要であることを認識していないと思いますが、C配列は痛みですが、これはSwiftです。 :) – Moritz

+0

[OK]をので、私はそれが後に他の場所でのエラーを投げるでしょうSWIFTアレイの広告では、さまざまな試みを試してみました。具体的な提案はありますか?私はエラーがあるか、彼らがスローされている場所がわからない場合 –

+0

@JaradKearsはあなたを助けることはできません。 – Zolnoor

関連する問題