swift
1private func getCategories(){ 2 Alamofire.request(Constant.Url.categoryUrl, method: .get, encoding: JSONEncoding.default).responseJSON { response in 3 switch response.result { 4 case .success: 5 guard let object = response.result.value else { return } 6 let json:JSON = JSON(object) 7 json.forEach { (_, json) in 8 self.categories.append(json["name"].stringValue) 9 self.categoriesId.append(json["id"].stringValue) 10 } 11 case .failure: 12 print("error") 13 } 14 } 15 } 16override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { 17 var articles: [ArticleViewController] = [] 18 getCategories() 19 for i in 0..<categories.count { 20 articles.append(ArticleViewController()) 21 articles[i].categoryInfo = IndicatorInfo(title: categories[i]) 22 } 23 return articles 24 }
上記のようなコードで、getCategoriesはAlamofireを使用してapiを叩いて、非同期でデータを取得しています(Alamofireの仕様で非同期になる)。この処理が全て終わってからfor 以下の処理を実行したいのですが、どのようなコードを書けば良いでしょうか?
responseJSONのブロック内と、その外側が同じスレッドで処理されるため、waitすると、止まってしまう。ということもあり、上手くいっていません…。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/07/01 14:26
2018/07/01 14:47 編集
退会済みユーザー
2018/07/01 14:54
2018/07/01 14:55
退会済みユーザー
2018/07/01 15:07
2018/07/01 16:05 編集
退会済みユーザー
2018/07/02 13:33