Невозможно определить тип закрытия в текущем контексте - PullRequest
0 голосов
/ 01 ноября 2018

В 3-й строке функции ниже я получаю следующую ошибку:

Невозможно определить тип закрытия в текущем контексте

Как мне это исправить?

func fetchAllUsersImages() {
    print("inside func")
    self.ref.child("Posts").child(self.userID).child(self.postNum).observe(.childAdded, with: { snapshot in //error here

        var images: [URL] = []
        if let snapShotValue = snapshot.value as? [String: String] {

            for (_, value) in snapShotValue {
                if let imageURL = URL(string: value) {
                    print(imageURL, "image url here")
                    let imageAsData = try Data(contentsOf: imageURL)
                    let image = UIImage(data: imageAsData)
                    let ImageObject = Image()
                    ImageObject.image = image
                    self.arrayOfImgObj.append(ImageObject)
                    self.tableView.reloadData()
                }
            }
        }
    })
}

1 Ответ

0 голосов
/ 01 ноября 2018

Причина, по которой он не выводит тип замыкания, заключается в том, что оператор try не обрабатывается. Это означает, что при закрытии ожидается ошибка "catch", но в вашем случае вы забыли правило do-try-catch.

Поэтому вы можете попробовать следующий ответ, который поймает ваши ошибки:

do {
    let imageAsData = try Data(contentsOf: imageURL)
    let image = UIImage(data: imageAsData)
    let ImageObject = Image()
    ImageObject.image = image
    self.arrayOfImgObj.append(ImageObject)
} catch {
    print("imageURL was not able to be converted into data") // Assert or add an alert
}

Затем вы можете заявить об ошибке (для тестирования), или то, что я лично сделал бы, - настроить оповещение.

Таким образом, приложение не будет аварийно завершать работу, а вместо этого уведомит пользователя. Я нахожу это очень полезным, когда на ходу, и мое устройство не подключено - поэтому я вижу сообщения об ошибках вместо пустого сбоя, не зная, что произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...