3

構造体

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

4

1 に答える 1