【发布时间】:2016-07-05 09:10:32
【问题描述】:
我确定我错过了一些明显的东西。
使用 Parse Server 我想将请求中的一些数据填充到字典中。
query.findObjectsInBackgroundWithBlock { (books, error) in
guard (books != nil) else {
print(error)
return
}
for book in books! {
print("\n\n\(book)") //#1 Got some book
if let coverString = book["cover"] {
print("coverString OK : \(coverString)") //#2 got a valid String
self.bookImages.append(coverString as? String)
} else {
print("coverString nil")
self.bookImages.append(nil)
}
}
}
如果我:print("Tableau image: \(bookImages)\n") 我在我的var bookImages = [String?]() 中什么也没有,即使我在coverString #2 中得到了一些东西。
但是如果我 .append("foobar") 除了在闭包中的其他任何地方(尝试),我的字典就不是空的。
为什么会有这种奇怪的魔法?
【问题讨论】:
-
findObjectsInBackgroundWithBlock是一个异步操作。因此,您的数组(.append用于数组,而不是字典)可能已正确填充,但您可能在未填充时查看它尚未。 -
是的,抱歉,我需要一杯咖啡,一个数组,你是对的。我也没有考虑过,但是您对异步方法可能是正确的。哼?但我不知道如何管理这个。这是我的文件的要点:gist.github.com/gfelot/70af1dd940d605b47578