谁能告诉我为什么我的 startingPoints 数组仍然是 0 个元素?我知道我在查询期间返回了对象,因为该 print 语句打印出了每个查询结果,但是这些对象似乎没有附加到我的本地数组中。我已经包含了下面的代码片段...
func buildStartSpots() -> Void {
let queryStartingPoints = PFQuery(className: "CarpoolSpots")
queryStartingPoints.whereKey("spotCityIndex", equalTo: self.startingCity)
queryStartingPoints.findObjectsInBackgroundWithBlock{(objects: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects! {
print("starting point: \(object)")
self.startingPoints.append(object)
}
} else {
// Log details of the failure
print("Error: \(error!) \(error!.userInfo)")
}
}
print("starting points")
dump(self.startingPoints)
}
最佳答案
虽然我没有使用 Parse 的经验,但该 block 是异步执行的,并且很可能是非阻塞的,正如 API 调用的方法名称所指示的那样。因此,不能保证数据在您调用 dump
时可用,因为后台线程可能仍在执行其工作。
保证数据可用的唯一位置是您提供给 API 调用的完成 block 。所以你可能需要一些方法来通知其他人的变化,例如发布 NSNotification
或使用来自第三方库(例如 ReactiveCocoa、RxSwift)的事件流构造。
关于ios - 解析查询结果未添加(附加)到 iOS Swift 中的本地数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732181/