Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中更新属性时获得通知?_Ios_Swift_Asynchronous_Delegates - Fatal编程技术网

Ios 如何在Swift中更新属性时获得通知?

Ios 如何在Swift中更新属性时获得通知?,ios,swift,asynchronous,delegates,Ios,Swift,Asynchronous,Delegates,我有两个从API获取数据的异步方法。一个更新earthLocationData的属性,第二个使用earthLocationData的属性(imageURL)下载将保存在earthLocationData.image上的图像 下载图像后,我应该使用该图像更改imageView 我有以下代码: var earthLocationData: EarthLocationData? { didSet { self.imageView.image = earthLocationDat

我有两个从API获取数据的异步方法。一个更新
earthLocationData
的属性,第二个使用
earthLocationData
的属性(
imageURL
)下载将保存在
earthLocationData.image
上的图像

下载图像后,我应该使用该图像更改imageView

我有以下代码:

var earthLocationData: EarthLocationData? {
    didSet {
        self.imageView.image = earthLocationData!.image
    }
}
但是它不起作用,因为
earthLocationData.image
是以异步方式下载的


那么有没有办法在
earthLocationData.image
上使用didSet?

如何下载
earthLocationData.image
?请共享完整的代码。您可以使用委派模式,或为
EarthLocationData
对象提供回调闭包,也可以使用NSNotification。如果
EarthLocationData.image
加载到不同的线程,则回调将发生在同一个线程上。任何UI更新都需要在主线程上进行,因此将
self.imageView.image
代码包装到
DispatchQueue.main.async