Skip to content

Instantly share code, notes, and snippets.

@masuhara
Last active September 16, 2018 07:02
Show Gist options
  • Save masuhara/ae02e436cd59fd2c60bf2cbc140732f3 to your computer and use it in GitHub Desktop.
Save masuhara/ae02e436cd59fd2c60bf2cbc140732f3 to your computer and use it in GitHub Desktop.
Closure in Closure
func uploadProfileImage(imageData: Data, filename: String, result: @escaping (_ imageUrl: String?, _ error: Error?) -> Void) {
// 例えばアップロード先への参照ができるstorage変数に画像をアップロードし、アップロードが完了されたらその画像のダウンロードURLを取得する場合
storage.putData(imageData, completion: { (metadata, error) in
// 追加
print(metadata) // <- 呼ばれる
if let error = error {
// クロージャの呼び出し元に返す
result(nil, error)
} else {
metadata?.storageReference?.downloadURL(completion: { (url, error) in
if let error = error {
// クロージャの呼び出し元に返す
result(nil, error) // <- 呼ばれない
} else {
// クロージャの呼び出し元に返す
result(url?.absoluteString, nil) // <- 呼ばれない
}
})
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment