構造体
dotSwift 2016 Demo で Chris 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)
上記の行は、リスト オブジェクトの配列を返すことになっています。クリス・エディホフは問題なくやっているようですが、そうするとXcodeが警告します
- flatMap は、予想されるコンテキストの結果タイプ '_?' ではなく、'U?' を生成します。
また、List.init
ここには何がありますか?オブジェクトの初期化のこの方法を見たことがありません。そうあるべきList()
か、ここで顧客の初期化を使用している場合、それは正しいはずList(json:someObject)
ですか?
Chris Edihof トークへの参照: https://www.youtube.com/watch?v=ewk-XNzXzAA