2017-11-09 14 views
1

:私がしようとするとはchildByAutoId()の後ろに値に到達するためにどのように

Projects: 
     | 
     -------KyHzk8VtHitcLlYw1MT 
       | 
       - ProjectName: "ProjectNameTest" 
       | 
       - Creator: "CreatorTest" 
       - And so on... 

let ref = Database.database().reference(fromURL: "https://projectsupport-e475b.firebaseio.com/").child("Projects").childByAutoId() 
let values = ["ProjectTitle": ProjectTitle, "Fighters": EarlySupporters, "Tags": Tags, "TotalFighters": "0", "Description": Description, "ProfileImage": profileImageUrl, "Creator": self.username!] as [String : Any] 


ref.updateChildValues(values) 

は、これは私のデータベースです

Database.database().reference().child("Projects").observe(.childAdded, with: { (snapshot) in 

      if let dictionary = snapshot.value as? [String : AnyObject] 
      { 
       let project = Project(dictionary: dictionary) 
       //The following line was the problem: 

       //project.setValuesForKeys(dictionary) 


       //I'm still not sure why that solved the problem. 

       print(project) 
       DispatchQueue.main.async { 
        self.tableView.reloadData() 
       } 
      } 

      print(snapshot) 
     }, withCancel: nil) 

これは、次のようになりクラッシュ:私は、次のコードを使用してデータを取得するを0

キャッチされていない例外「NSUnknownKeyException」が原因でアプリを終了しています。理由は「[setValue:forUndefinedKey:]:このクラスはキークリエイターのキー値に符合していません。

データへのアクセス方法を教えてください。どのようにして鍵を入手できますか?

+0

まず、あなたの値が正しく更新されているかどうかチェックしましたか?あなたの辞書を印刷して、スナップショット値を正しく取得するかどうか確認できますか? – Arrabidas92

+1

あなたの問題はあなたのデータがファイアベースではないと思います。 – TheeBen

+0

私はそれについてはわかりません。 –

答えて

0

私はそれを手に入れました!私は、コードのこれらの行といくつかの問題があると思います。

let project = Project(dictionary: dictionary) project.setValuesForKeys(dictionary)

あなたの変数プロジェクトの種類は何ですか?キーワードの前にletキーワードがあると、project変数が不変型であるといえます。設定した後は変更できません。そして、それはまさにあなたの関数setValueForKeysで次の行にしようとしていることです。差異があるかどうかを確認するために、projectを​​という可変タイプにしてみてください。

+0

Xcodeは、変数が変更されておらず、警告を表示していると言っています。また、let statmente関数を使ってユーザーを保存してフェッチします。 –

+0

ありがとうございます。 –

関連する問題