gpt4 book ai didi

ios - swift 数组在循环时不追加

转载 作者:行者123 更新时间:2023-11-28 16:07:49 25 4
gpt4 key购买 nike

我正在尝试从 Parse 检索数据以附加到我的组数组:

var displayedGroups = [Groups]()

组是一个结构:

struct Groups{
let name: String?
let date: Date
let number: Int
let id: String

init(id: String, name: String, date: Date, number: Int) {
self.id = id
self.name = name
self.date = date
self.number = number
}
}

这是我尝试检索数据的函数:

func getDisplayedGroups() {
let query = PFQuery(className: "MeetUps")
print(PFUser.current()?.username)
query.whereKey("peeps", contains: PFUser.current()?.username)
query.findObjectsInBackground { (objects, error) in
if error != nil {
print(error)
} else if let objects = objects {
for meetUps in objects {
let peeps = (meetUps["peeps"] as! [String])
let id = meetUps.objectId!
//let name = meetUps["meetUpName"] as? String
let date = meetUps["when"] as! Date
let group = Groups(id: id, name: " ", date: date, number: peeps.count)
print(group)
self.displayedGroups.append(group)
}
}
}
for i in displayedGroups {
print(i)
}
tableView.reloadData()
}

我注释掉了 let name = meetUps["meetUpName"]... 因为在我的解析仪表板的“meetUpName”键列中没有值。

print(group) 有效,它为每个循环打印不同的组。

但是,这个 block :

for i in displayedGroups {
print(i)
}

根本不打印 :/因此我的表没有从 displayedGroups 加载数据。它与异步有关吗?应该不对吧?因为他们在同一个街区。我不知道,请指教。谢谢!

最佳答案

findObjectsInBackground 异步工作,将循环和重新加载 TableView 的行放在 完成 block 中。

您可能需要在主线程上重新加载 TableView 。

...
for meetUps in objects {
let peeps = (meetUps["peeps"] as! [String])
let id = meetUps.objectId!
//let name = meetUps["meetUpName"] as? String
let date = meetUps["when"] as! Date
let group = Groups(id: id, name: " ", date: date, number: peeps.count)
// print(group)
self.displayedGroups.append(group)
}
for i in displayedGroups {
print(i)
}
dispatch_async(dispatch_get_main_queue) {
self.tableView.reloadData()
}
...

关于ios - swift 数组在循环时不追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992287/

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