Firestoreのドキュメントの中で以下のようなエラー処理について悩んでいます。
参考:Firestore公式
以下の中で、Resultというのはどこから来たのでしょうか?
また、このResultをletでoptionalにしている理由が分かりません。
私が思うには、引数としてのdocumentに対してresultの処理をすれば分かるのですが
成功した値であるdocumentとは別に、Resultを使っている理由が分かりません。
他のコードを見ると、成功したとしてdocumentを使っているからです。
ご教授よろしくお願いいたします。
swift
1let docRef = db.collection("cities").document("BJ") 2 3docRef.getDocument { (document, error) in 4 // Construct a Result type to encapsulate deserialization errors or 5 // successful deserialization. Note that if there is no error thrown 6 // the value may still be `nil`, indicating a successful deserialization 7 // of a value that does not exist. 8 // 9 // There are thus three cases to handle, which Swift lets us describe 10 // nicely with built-in Result types: 11 // 12 // Result 13 // /\ 14 // Error Optional<City> 15 // /\ 16 // Nil City 17 let result = Result { 18 try document?.data(as: City.self) 19 } 20 switch result { 21 case .success(let city): 22 if let city = city { 23 // A `City` value was successfully initialized from the DocumentSnapshot. 24 print("City: (city)") 25 } else { 26 // A nil value was successfully initialized from the DocumentSnapshot, 27 // or the DocumentSnapshot was nil. 28 print("Document does not exist") 29 } 30 case .failure(let error): 31 // A `City` value could not be initialized from the DocumentSnapshot. 32 print("Error decoding city: (error)") 33 } 34}
あなたの回答
tips
プレビュー