Используйте разрыв в замыканиях [Swift] - PullRequest
0 голосов
/ 02 ноября 2018

В моем быстром приложении есть следующая функция:

func getImages() {

    var i = 0
    K: while (true) {
        let downloadURL = URL(string: "serverURL")
        Database.downloadImage(withURL: downloadURL!) { (image) in

            if image == nil { break }

            self.imagesArray.append(image!)
            self.collectionView?.reloadData()
            i += 1
        }
    }
}

Идея состоит в том, чтобы получать изображения с сервера, но я не знаю точное количество изображений. Но это ошибка для оператора if, который проверяет значение nil:

Немеченый разрыв разрешен только внутри цикла или переключателя, для выхода из if или do требуется помеченный разрыв.

Как решить, нужно ли знать количество изображений для ограничения цикла?

1 Ответ

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

Desipte очень важно знать количество изображений, вы можете использовать это

func getImages(_ i:Int) {

        let downloadURL = URL(string: "serverURL")
        Database.downloadImage(withURL: downloadURL!) { (image) in

            if let img = image { 

            self.imagesArray.append(img)
            self.collectionView?.reloadData()
            getImages(i+1)

           }
           else {
               print("image is nil final call")
           }
        }
    }
}

Также загрузка может зависеть от того, как я не делаю бесконечный цикл

...