2016-07-19 4 views
1

저는 프로그래밍과 새로운 기능에 대해 새로운 것입니다. 그리고 어떻게 내 viewDidLoad 내 요청 응답을 다시 사용할 수 거기에 보낼 수 있습니다 궁금하네요. 요청하려면 , 나는 alamofire를 사용하고 json은 swiftyJSON입니다. 내가하려고하는 것은 제목과 이미지 URL을 포함하는 서버에서 데이터 (JSON)를 가져 오는 것입니다. 그 후 이미지 URL에서 이미지를 가져 오려고합니다. viewDidLad에서 , 나는 Get 메서드 인 함수를 호출합니다. viewDidLoad 메서드에 대한 비동기 요청을 다시 보내는 방법

func getData() 
{ 
    Alamofire.request(.GET,"heregoesurl") 
     .responseJSON { response in 
      if let Json = response.result.value { 
       let json = JSON(Json) 
       for (_,subJson):(String, JSON) in json { 
        //get image url 
        //pass image url to imageGet() method 
        //add image to an array of myStruct 
       } 

       } 
      } 
    } 

및 imageGet에

() 메소드 : GetData의에
override func viewDidLoad() { 
    super.viewDidLoad() 
    getData() 
    //use myStruct 

() 내가이 수행

func getImages(url:String,type:String) 
{ 
    Alamofire.request(.GET, url) 
     .responseImage { response in 
      if let image = response.result.value { 
       //add image to myStruct 
      } 
    } 
} 

문제 때문에 요청의 비동기 성질이다를 MYSTRUCT는 없다 viewDidLoad에서 준비. getData() 메소드에 대해 completionHandler를 사용했는데 제대로 작동합니다. 하지만 여전히 이미지가 없으며 이미지 URL이 있습니다. 나는 그 때 내가 무엇을해야하는지 모른다.

이와 같은 작업을 수행하는 방법에 대한 도움을 주시면 감사하겠습니다.

+0

체크 [이 (http://stackoverflow.com/a/을 38417602/5654848). 완료 핸들러를 사용하는 방법을 설명했습니다. 제대로 사용하고 있지 않습니다. – Dershowitz123

+0

@ Dershowitz123 실제로 게시 된 코드에서 완료를 사용하지 않았습니다. 나는 그것을 사용했다는 것을 의미하지만 내가 게시 한 것에 나는 그들을 사용하지 않았다. 내게 진짜 질문은 어떻게 다른 URL을 가진 이미지를 얻을 수 있고 내가 getData() 완료 핸들러에있는 동안 그들을 사용할 수있다 –

+0

myStruct 사용자 정의 구조체입니까? getData()를 호출 할 수 있도록 초기화 할 수 있습니까? –

답변

2

이 시도 : GetData의 내부

public func getImages(url:String,type:String){ 
    Alamofire.request(.GET, url).response { (request, response, data, error) in 
     //For sure that you will have the main queue and you will see the view 
     dispatch_sync(dispatch_get_main_queue(), { 
      self.myImageView.image = UIImage(data: data, scale:1) // or store it to your `myStruct` 
     }) 
    } 
} 

통화를() 함수

+0

, 그 문제를 해결하지 않습니다. 어쨌든, 나는 몇 가지 트릭으로 처리했습니다. 시간 내 줘서 고마워 ;) –

0

사용이 :

extension UIImageView { 

func downloadImage(from url : String){ 

    let urlRequest = URLRequest(url: URL(string: url)!) 
    let task = URLSession.shared.dataTask(with: urlRequest){(data,response,error)in 

     if error != nil { 
      print(error) 
     } 

     DispatchQueue.main.async { 
      self.image = UIImage(data:data!) 
     } 
    } 

    task.resume() 
} 
} 
관련 문제