infinitループで機能するため、URLからデータを保存できません。どのようにそれを修正する? マイコード:非同期タスクは外部変数を変更しません。 Swift 3
func getRegion2(){
let method = "region/"
var url = serviceUrl+method
var myArray: [String]()
while(url != nil){
Alamofire.request(url).validate().responseJSON { response in
switch response.result {
case .success(let data):
let nextUrl = JSON(data)["next"].stringValue
url = nextUrl
myArray = myArray + myArray
print(nextUrl)
case .failure(let error):
print("Request failed with error: \(error)")
}
}
}
print(myArray)
}
「しばらく」なしで実行すると、すべてが正常に動作します。
を?あなたの目的はなんですか ? – emresancaktar
ブロックは非同期です。ですから、 'myArray = myArray + myArray'でこの行をチェックする必要があります。この行の後に印刷してください。 –
@emresancaktar Alamofire.request(url)を実行する必要がある時間がどれくらいかわからないため、「while」を使用します。最初のステップ:デフォルトのURLからデータをダウンロードします。データから配列を保存し、nextUrlをチェックします。ステップ2:nextUrlがnilでなければ、nextUrlからデータをダウンロードし、配列などを追加してください。 –