UIImage不显示图片

时间:2015-06-22 03:14:09

标签: ios swift uiimage

代码

  var promos = [PromoGroup]()
  var adsImages = Array<UIImage>()

 override func viewDidLoad() {
    super.viewDidLoad()

    setupData()

    //print 1
    println(self.promos.count)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func setupData() {
    getAllDataPromos { (PromoGroup, error) -> Void in
        if error == nil {
            self.promos = PromoGroup!

            //print 2
            println(self.promos.count)

            for i in 0...self.promos.count-1 {
                 self.adsImages.append(UIImage(data: NSData(contentsOfURL: NSURL(string:"https://abs.com/content/bb2.jpg")!)!)!)
            } 
        }
    }
}

但adsImage无法显示图片,但是当我尝试将adsImage移动到viewDidLoad并且它也能正常工作时,结果是println

打印1个结果 0

打印2结果 3

计数数据如果在getAllDataPromos上,

如果我想在adsImage中显示图片,该怎么办...

由于

1 个答案:

答案 0 :(得分:1)

(改编自我之前的答案:https://stackoverflow.com/a/28207368/2274694

通过在调用println(self.promos.count)之后立即调用setupData,并因此在该方法中包含getAllDataPromos,您就会尝试在self.promos.count之前打印getAllDataPromos&#39}。已在异步println(self.promos.count)块中设置。

异步块在后台执行,因此在块在主线程上执行后立即写入的代码,异步块中的代码将不会完成。这就是为什么adsImage在异步块内正确打印的原因 - 因为在那一点上,代码肯定已被执行;但是你不能直接在async块之外打印更新后的值,因为异步代码还没有完成执行。

同样,如果您尝试使用UIImageView数组中的值在adsImages df <- data.frame(ant.bearing = seq(0,300, by=60), sig = c(98, 60, 44, 67, 58, 91), ts=1) 中显示图像,则无法将该图像设置为异步块已完成,因此我建议在异步块中进行设置。