所以我有 2 个函数,第一个获取推文类型的数组,第二个获取广告。在第二个函数中,我尝试做的就是将广告附加到第一个函数的数组末尾,但是当我尝试将发布的 var“new”设置为等于结果数组时,它不起作用,而是“new”var 仍然等于第一个 func 中的原始数组。不知何故,我无法坚持第二个功能修改。 视图模型
import Foundation
class FeedViewModel: ObservableObject{
@Published var new = [Tweet]()
let service = TweetService()
let userService = UserService()
init(){
fetchNew()
getAd(self.new)
}
func fetchNew(){
service.fetchNew { tweets in
self.new = tweets
for i in 0 ..< tweets.count {
let uid = tweets[i].uid
self.userService.fetchUser(withUid: uid) { user in
self.new[i].user = user
}
}
}
}
func getAd(){
service.fetchAd { ads in
var firstAd = ads[0]
self.userService.fetchUser(withUid: firstAd.uid) { user in
firstAd.user = user
}
self.new.append(firstAd)
}
}
查看
ScrollView {
LazyVStack {
ForEach(viewModel.new) { tweet in
Button {
//
} label: {
someView(tweet: tweet
}
}
}
不是真正的答案所以我稍后将其删除但是代码不能以清晰的方式写在注释中
有什么理由不能将
getAd
简化为
func getAd(){
service.fetchAd { ads in
var firstAd = ads[0]
self.userService.fetchUser(withUid: firstAd.uid) { user in
firstAd.user = user
}
self.new.append(firstAd)
}
}