【发布时间】:2016-03-12 22:47:38
【问题描述】:
我正在使用 Spotify API 运行三个 API 调用,以获取以下数据并将它们存储到我的 Artist 对象中:
- 艺术家。
- 那位艺术家的专辑。
- 艺术家每张专辑的曲目。
完成后,我想将对象传递给不同的视图控制器。它看起来像这样:(如果必要的话可以在那里发布所有NSURLSession 代码)
func getArtist(artistName) {
getAlbums(artistIdString)}
func getAlbums(artistIdString) {
a = Album
Artist.albumsArray.append(a)
for album in Artist.albumsArray {
getTracks(albumIdString)
}
}
func getTracks (albumIdString) {
t = Track
for album in Artist.albumsArray {
if idString == albumIdString {
album.append(t)
}
}
}
func passArtist {
DataStore.sharedInstance().Artist = Artist
}
【问题讨论】:
-
如果你想按顺序调用异步函数 -- 即调用#1,等到完成然后检索结果,调用#2(可能有结果#1作为参数),等到完成,获取结果#2,等等 - 你必须有一个完成处理程序或其他方式来通知调用者异步函数完成。 SO上已经有很多这样的问题和很好的答案了。
-
您的问题可能还包含一些特殊的“子问题:有一个 N 输入数组(例如 URL)得到一个 N个对象,获取每个对象都需要调用一个异步函数,这个问题也有解决方案,在SO上已经回答了很多次了。
标签: ios objective-c swift nsurlsessiondatatask