構造体スウィフト
私はdotSwift 2016デモにクリスEdihoffによって与えられたデモでコードを再作成してみました。ここにコードがあります。
struct List {
let name:String
let id:Int
}
extension List {
init?(json: [String:AnyObject]) {
guard
let name = json["name"] as? String,
let id = json["id"] as? Int else
{
return nil
}
self.name = name
self.id = id
}
}
let listData = json["data"] as? [[String:AnyObject]]
今まではすべてがうまく見えます。しかし、これが問題の原因です。彼はこのようなものでした :
let list:[List] = listData.flatMap(List.init)
を上記の行は、リストオブジェクトの配列を返すことになっています。 Chris Edihoffは何の問題もなくこれをやっているようですが、私がそうするとXcodeは警告します
- flatMapは予想される文脈の結果タイプではなく、 '?
ここでもList.init
とは何ですか?私はオブジェクトの初期化のこの方法を見たことがありません。 List()
である必要があります。ここで顧客の初期化を使用している場合は、List(json:someObject)
になるはずです。クリスEdihof話をする
参考:https://www.youtube.com/watch?v=ewk-XNzXzAA