私は次をしようとしている:私はAlamofireからの応答を取得前の操作を完了する前にNSOperationがなぜ起動するのですか?
- 、私はこのために、アレイに
- 印刷この配列
を埋める:
var queue = NSOperationQueue()
let firstOperation = NSBlockOperation(block: {
let getMyProfileURL = "\(self.property.host)\(self.property.getMyProfile)"
Alamofire.request(.POST, getMyProfileURL, parameters: self.userParameters.profileParameteres, encoding: .JSON).responseJSON { response in
do {
let json = JSON(data: response.data!)
print(json)
if json["user"].count > 0 {
self.profileDetails.append(ProfileDetailsModel(json: json["user"]))
}
}
}
})
firstOperation.completionBlock = {
print("firstOperation completed")
}
queue.addOperation(firstOperation)
let secondOperation = NSBlockOperation(block: {
print(self.profileDetails)
})
secondOperation.addDependency(firstOperation.completionBlock)
secondOperation.completionBlock = {
print(self.profileDetails)
}
queue.addOperation(secondOperation)
ので、理論では、最初に私の配列を埋める必要があり、この作業を完了し(ブロック)、直ちにそれらの配列を印刷します。しかし、私は得る:
firstOperation completed
[] -> self.profileDetails from the secondOperation
[] -> self.profileDetails from the secondOperation completion block
and just here I get my JSON from the Alamofire 'do' block
私は間違っていましたか?そして、私はそれが私が望むように動作するようにそれを修正することができますか?
ブロックが返ってくると(操作が完了すると)リクエストが送信されるとすぐに、非同期呼び出しが戻ってくるのを待つことはありません。 – dan
解決方法はありますか?私は@dan –