gpt4 book ai didi

ios - 如何正确地将对象插入数组(回调后)?

转载 作者:行者123 更新时间:2023-11-29 00:57:33 26 4
gpt4 key购买 nike

我想将一个 User 对象附加到一个数组中。但是,我只想它的数据被下载之后这样做。

var items = [User]()
for id in user_ids {
let user = User(id: id)
user.downloadData({ [weak self] in
items.append(user) //will "user" be THIS instance?
})
}

顺序很重要。我也不希望重复出现任何并发症等。

在同一个实例的回调中将一个实例插入到一个数组中让我想知道我是否做对了。

我做得对吗?

最佳答案

是的,这是同一个用户。但是,不能保证每个用户都会按照您开始时的相同顺序完成。进行 2 处更改:(1) 使用字典存储下载的数据,(2) 使用 Grand Central Dispatch 等待所有数据下载完毕:

// Assume user's ID is an Int
let userData = [Int: User]()
let groupID = dispatch_group_create()

for id in user_ids {
let user = User(id: id)
dispatch_group_enter(groupID)

user.downloadData{ [weak self] in
userData[id] = user
dispatch_group_leave(groupID)
}
}

// Wait until data for all users have been downloaded
dispatch_group_wait(groupID, DISPATCH_TIME_FOREVER)

// Now all users' data have been downloaded. If you want to put them
// into an array according to some order, do this:
let items = user_ids.map { userData[$0]! }

关于ios - 如何正确地将对象插入数组(回调后)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com