に私はグループの私の配列に追加する解析からデータを取得しようとしているとき追加ません:迅速な配列のループ
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)は動作し、ループごとに異なるグループを出力します。
しかし、このブロック:
for i in displayedGroups {
print(i)
}
はまったく印刷されません:/と、そのような私のテーブルはdisplayedGroupsからデータをロードしていないよう。それは非同期と関係がありますか?すべきではないでしょうか?それらは同じブロックにあるためです。私は分かりません、助言してください。ありがとう!
query.findObjectsInBackgroundは、メインスレッドではありません。 したがって、query.findObjectsInBackgroundがバックグラウンドで実行されている間、forループが実行されます。 displayedGroupsは常にnullになります – koropok
'for'と' append'ではなく 'map'を使うほうがいいでしょう。 – Alexander
@AlexanderMomchliovあなたはさらに気にしていますか? –