2017-02-20 56 views
-1

私はこのトピックが以前に議論されたことは知っていますが、私のコードで働くStackOverflowの解決策は見つかりませんでした。 Swift 3で動作するようにコードを更新するにはどうすればよいですか?タイプ 'Any'にはFirebaseの添え字メンバーがありません

import Foundation 
import Firebase 
import FirebaseDatabase 
import FirebaseStorage 


struct Comment { 
    var image: String! 
    var postID: String! 
    var description: String! 
    var username: String! 
    var price: String! 
    var rating: String! 
    var title: String! 
    var ref: FIRDatabaseReference? 
    var key: String! 


    init(postID: String, image: String, description: String, username: String, title: String, rating: String, price: String, key: String = ""){ 

     self.description = description 
     self.postID = postID 
     self.username = username 
     self.title = title 
     self.rating = rating 
     self.price = price 
     self.image = image 
     self.ref = FIRDatabase.database().reference() 


    } 

    init(snapshot: FIRDataSnapshot){ 

     self.description = snapshot.value!["description"] as! String // error here 
     self.postID = snapshot.value!["postID"] as! String // error here 
     self.title = snapshot.value!["title"] as! String // error here 
     self.rating = snapshot.value!["rating"] as! String // error here 
     self.price = snapshot.value!["price"] as! String // error here 
     self.image = snapshot.value!["image"] as! String // error here 
     self.key = snapshot.key 
     self.ref = snapshot.ref 




    } 

    func toAnyObject() -> [String: AnyObject] { 

     return ["image": image, "description": description , "username": username, "postId": postID, "title": title, "rating": rating, "price": price] 
    } 


} 
+0

を使用します。 'let keyValue = snapshot.value as!辞書 'であり、' snapshot.value'は 'Any'として宣言されています。 –

+0

@gabe Any型Swift辞書型[String:AnyObject]にキャストする必要があります。あなたのスナップショットは辞書の配列です。 –

+0

@ Sachin-Vasありがとう。しかし、私はエラー 'タイプ'の値を割り当てることができません '辞書'を入力する '文字列!' ' – gabe

答えて

0

This-をお試しください:

init(snapshot: FIRDataSnapshot){ 

     let keyValue = snapshot as! [String:Any] 
     for data in keyValue 
     { 
     // Get your values 
     } 
} 
0

コードに続いて、あなたのケースで動作するはずです私はこれは私が私のコードにフォーマットを持っているかであるスウィフト2.2に

をこれらのエラーを持っていませんでした。

init(snapshot: FIRDataSnapshot){ 
    guard let values = snapshot.value as! [String: Any] else { 
     return 
    } 

    self.description = values["description"] as! String 
    self.postID = values["postID"] as! String 
    self.title = values["title"] as! String 
    self.rating = values["rating"] as! String 
    self.price = values["price"] as! String 
    self.image = values["image"] as! String 
    self.key = snapshot.key 
    self.ref = snapshot.ref 
} 

あなたが持っているものをお知らせください。

+0

条件付きバインディングの初期化子には、オプションの型が必要です。 '[String:Any]'はありません。 – gabe

+0

変更 'snapshot.value as! [文字列:任意] '' snapshot.value as? ' [文字列:任意] '。これは 'values [" ... "]'を 'values ... [" ... "]'または 'values![" ... "]'に変更する必要もあります。 – x4h1d

関連する問題