使用中断输入[Swift]

时间:2018-11-02 17:13:31

标签: swift break

在我的快捷应用程序中,我具有以下功能:

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 :(得分:3)

了解图像数量非常重要,您可以使用此

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")
           }
        }
    }
}

也可能是下载依赖于i,以免造成无限循环