Закрытия могут быть объявлены как typealias
ниже
typealias Completion = (Bool, Any, Error) -> Void
Если вы хотите использовать в своей функции в любом месте кода; вы можете написать как обычную переменную
func xyz(with param1: String, completion: Completion) {
}
Когда пользователь нажимает назад, результатом является RESULT_CANCELED , а полученное data
значение равно нулю. Таким образом, приложение вылетает при вызове data.getData()
, когда вы вызываете getData()
для нулевого объекта. Есть несколько способов обойти это: вы можете проверить, что такое resultCode
, и убедиться, что это RESULT_OK
. Вы также можете просто проверить, является ли data
Intent нулевым, прежде чем пытаться получить из него данные:
if (requestCode == PICK_IMAGE_REQUEST) {
if (data != null) {
filePath = data.getData();
} else {
// Note: if filePath is by default null, you don't need this else statement
filePath = null;
}
if (filePath != null) {
...