2017-08-21 1 views
-1

スウィフト-3Swiftで辞書を使って構造体を初期化することはできますか?

struct Book { 
     var title: String 
     var description: String 
     var price: Float 
    } 

私は辞書

var book: Book? = ["Title": "Harry Poter", "Description": "Fantasy Novel", "Price": 190] 

から初期化したいブックの構造を持っているスイフトに行うことが可能ですか?

+3

(あなたは、適切な 'init'方法を書いた場合)はい、それは –

+0

可能ですこれまでに何を試しましたか? –

+1

@Larme – Siyavash

答えて

-1

はマーティンがあなたの構造のためを言うと、あなたの条件に応じてそれを使用すると)(、適切な初期化を行うようにしてください:

struct Book { 
    var title: String 
    var description: String 
    var price: Int 
} 

extension Book { 
    init(book : Dictionary<String,Any>){ 
     title = book["Title"] as? String ?? "" 
     description = book["Description"] as? String ?? "" 
     price = book["Price"] as? Int ?? 0 
    } 
} 

let dict = ["Title": "Harry Poter", "Description": "Fantasy Novel", "Price": 190] as [String : Any] 
var book: Book? = Book(book: dict) 
print(book!) 
+0

価格の値が常に「0.0」を返すので、このコードは機能しません。出力は 'Book(title:" Harry Poter "、説明:" Fantasy Novel "、price:0.0)'です。 –

+0

更新された回答を確認してください –

+0

@LorenzoBデータに値の種類が付いてくると動作します! –

関連する問題