2017-09-15 18 views
-1

ナビゲーションコントローラをクリックしたセルからデータを取得しようとしています。Firebaseテーブルビューとナビゲーションビュー間のデータの受け渡し

これはMIJ Postクラスである:

class Post { 
    let ref: DatabaseReference! 
    var TypeControle: String = "" 
    var Stad: String = "" 
    var Tijd: String = "" 
    var Latitude: String = "" 
    var Longitude: String = "" 
    var Extrainformatie: String = "" 

    init(TypeControle: String) { 
     self.TypeControle = TypeControle 
     ref = Database.database().reference().child("Rollerbanken").childByAutoId() 
    } 
    init(Stad: String){ 
     self.Stad = Stad 
     ref = Database.database().reference().child("Rollerbanken").childByAutoId() 
    } 
    init(Tijd: String) { 
     self.Tijd = Tijd 
     ref = Database.database().reference().child("Rollerbanken").childByAutoId() 
    } 
    init(Latitude: String) { 
     self.Latitude = Latitude 
     ref = Database.database().reference().child("Rollerbanken").childByAutoId() 
    } 
    init(Longitude: String) { 
     self.Longitude = Longitude 
     ref = Database.database().reference().child("Rollerbanken").childByAutoId() 
    } 
    init(Extrainformatie: String) { 
     self.Extrainformatie = Extrainformatie 
     ref = Database.database().reference().child("Rollerbanken").childByAutoId() 
    } 

    init() { 
     ref = Database.database().reference().child("Rollerbanken").childByAutoId() 
    } 

    init(snapshot: DataSnapshot) 
    { 
     ref = snapshot.ref 
     if let value = snapshot.value as? [String : Any] { 
      TypeControle = value["TypeControle"] as! String 
      Stad = value["Stad"] as! String 
      Tijd = value["Tijd"] as! String 
      Latitude = value["Latitude"] as! String 
      Longitude = value["Longitude"] as! String 
      Extrainformatie = value["Extrainformatie"] as! String 

     } 
    } 

    func save() { 
     ref.setValue(toDictionary()) 
    } 

    func toDictionary() -> [String : Any] 
    { 
     return [ 
      "TypeControle" : TypeControle, 
      "Stad" : Stad, 
      "Tijd" : Tijd, 
      "Latitude" : Latitude, 
      "Longitude" : Longitude, 
      "Extrainformatie" : Extrainformatie 
     ] 
    } 
} 

データベース構造: Structure

これは私がこれまでに得たものである(。そして、データがラベルに私は、追加情報]タブの並べ替えをしたいです)

TableviewCell: enter image description here

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "mySegue" { 
      if let indexPath = self.tableView.indexPathForSelectedRow { 
       let controller = segue.destination as! ExtraViewController 
       let story = posts[indexPath.row] 
       controller.tijd = story["Tijd"] as! String 
      } 
    } 
} 

エラー私が取得されます。タイプ 'ポスト' は全くありません添え字メンバー。私はあなたの配列は、ポストモデルクラスの型のオブジェクトが含まれていると思います

var tijd:String! 

- :ExtraViewControllerで

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "mySegue" { 
     if let indexPath = self.tableView.indexPathForSelectedRow { 
      let controller = segue.destination as! ExtraViewController 
      let story = posts[indexPath.row] 
      print(story.Tijd) 
      controller.tijd = story.Tijd as! String 
     } 
    } 
} 

- :ラインで

controller.tijd = story["Tijd"] as! String

+0

あなたは値スクリーンショットを投稿します。 – Pushpendra

+0

更新しました –

+0

投稿の投稿をどのように宣言しましたか? :) – Alex

答えて

0

はこれを試してみてください。

+0

それは動作しません、データは "ExtraViewController"に行きません。私はなぜ –

+0

ExtraViewControllerのtijdに値を設定していないのか理解していません。また、値を確認するためにprint(story.Tijd)が空ではない。 – Pushpendra

+0

値はありません。 'print(" test \(Tijd) ")と答えた場合は、" test nil "と答えます。 –

0

あなたが得るエラーは、私たちに問題が何であるかのヒントを与える:ここでstorystory = posts[indexPath.row]中)

Type 'Post' has no subscript members 

はタイプのポストであり、ポストは、そのクラスのスコープで定義された添字を持っていません。 。だからこそ、story["Tijd"]を書くとエラーが発生します。

私は、スナップショットを受け取ったときにオプションのタイプキャストas? [String : AnyObject]を実行する必要がありますが、スナップショットをどのように初期化するのか分かりません。

関連する問題