imはfirebaseで作業しようとしていますが、この関数はArrayに "Offers"を保存してから、この配列を別のViewControllerに送信してtableViewに表示します。Swift Make For Loopが非同期関数の終了を待つ
データがサーバから来て、firebaseのコールバックが来る前にforループが終了しているという問題が見つかりました。ここで、 "fir(self.goodOffer ...)"という行が終わりですfirebaseコールバックの
多分誰かがforループをファイアベースのコールバックが終了するのを待たせることができますか?
thx。
geocodeAddress(totalFromLocation, callback: { (location) in
if location != nil {
fromLocation = location
self.geocodeAddress(totalToLocation, callback: { (location) in
if location != nil {
toLocation = location
mainDistance = Int(self.distanceCalculate(fromLocation!, locationTwo: toLocation!))
print(mainDistance)
REF_BUSSINES_OFFERS.queryOrderedByKey().queryEqualToValue("north").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
print("in snap")
if let value = snapshot.value {
if self.isAlavator {
if let area = value["north"] {
if let data = area!["withAlavator"]! {
if let bids = data["bids"] as? Int {
for i in 1..<bids+1 {
if let bid = data["\(i)"] {
let bidFromSize = bid!["fromSize"] as! Int
let bidToSize = bid!["toSize"] as! Int
let bidFromDistance = bid!["fromDistance"] as! Int
let bidToDistance = bid!["toDistance"] as! Int
if mainDistance >= bidFromDistance && mainDistance <= bidToDistance {
if Int(totalSize) >= bidFromSize && Int(totalSize) <= bidToSize {
let price = String(bid!["price"])
let name = bid!["name"] as! String
let phoneNumber = bid!["phoneNumber"] as! String
var logoImageData: NSData!
LOGOS_REF.child("\(phoneNumber)").dataWithMaxSize(3 * 1024 * 1024, completion: { (data, error) in
if error != nil {
logoImageData = UIImagePNGRepresentation(UIImage(named: "company")!)
} else {
logoImageData = data
}
let offer = Offer(logoImage: logoImageData, name: name, price: price)
self.goodOffers.append(offer)
print("fir \(self.goodOffers[0].price)")
})
}
}
}
print(i)
}//end of for
print("out")
//self.changgeViewToTable()
}
良い悲しみは、あなたのコードが画面の横に走っています。どのように多くのレベルが深いかを知っているあなたのものを入れ子にするのではなく、早く帰ることができるように、 (また、 "alavator"は何ですか?) –
エラーを修正したときに[Code Review](http://codereview.stackexchange.com/)に投稿する必要があります。あなたのコードは悪夢の素材です – Kametrixom