我想检索这些对象并将它们存储在数组中。
当我在函数内部打印时,一切正常。但是,在外部打印时,数组为空。
我尝试过不使用该功能,但在堆栈溢出时遵循了一个答案,但仍然不知道发生了什么。
override func viewDidLoad() {
super.viewDidLoad()
func getAllInfoFromParse () {
let query = PFQuery(className:"UserQRCodes")
query.whereKey("userName", equalTo: PFUser.current()!)
query.findObjectsInBackground { (results, error) in
if let error = error {
print(error.localizedDescription)
} else if let results = results {
for object in results {
if let userInfo = object["info"] as? String {
self.infoTakenFromUsersParse.append(userInfo)
print(self.infoTakenFromUsersParse)
}
}
}
}
}
getAllInfoFromParse ()
print(self.infoTakenFromUsersParse)
self.infoTakenFromUsersParseWithoutDups = self.infoTakenFromUsersParse.removingDuplicates()
print("The info from parse is here \(self.infoTakenFromUsersParseWithoutDups)")
print("The info from parse is here \(self.infoTakenFromUsersParse)")
print(self.imageFiles)
print(imageFiles)
print(imageFiles)
Console:
logged in
[]
The info from parse is here []
The info from parse is here []
[]
[]
[]
[]
["Coffee Shop"]
该数组用于填充tableView。我在做什么错了?
答案 0 :(得分:0)
您不必再次查询每个单独的项目。这些对象应该在原始响应中。您还需要确保在第3行上查询的用户名是实际用户的用户名,而不是实际用户对象。最后,根据您的评论,您似乎需要某种回调函数来告知请求何时完成执行,因此请将其添加到getInfoFromParse
函数中。尝试这样的事情:
func getInfoFromParse(callback: () -> Void) {
let query = PFQuery(className:"UserQRCodes")
query.whereKey("userName", equalTo: PFUser.current()!)
query.findObjectsInBackground { (results, error) in
if let error = error {
print(error.localizedDescription)
} else if let results = results {
for object in results {
if let userInfo = object["info"] as? String {
self.infoTakenFromUsersParse.append(userInfo)
}
}
self.myTableView.reloadData()
callback()
}
}
}
编辑:然后,当您准备访问此函数的结果时,请执行以下操作:
getInfoFromParse {
print(self.infoTakenFromUsersParse)
}