2017-05-23 1 views
0

이 코드는 JSON 데이터를 가져 와서이 코드가 포함 된보기 컨트롤러에 표시합니다. 다른보기 컨트롤러에서이 페이지의 결과를 사용하는 방법을 알아 내려고 노력하고 있습니다. 두 번째보기 컨트롤러의 코드는 표시 할 코드의 결과를 얻으려고합니다.보기 컨트롤러 간의 JSON 데이터 구문 분석

 func paraseData() 
{ 

    fetchedFiName = [] 

    let url = "" 
    var request = URLRequest(url: URL(string: url)!) 
    request.httpMethod = "GET" 

    let configuration = URLSessionConfiguration.default 
    let session = URLSession(configuration: configuration, delegate: nil, delegateQueue: OperationQueue.main) 

    let task = session.dataTask(with: request) { (data, response, error) in 
     if error != nil { 
      print("Error") 
     } 
     else{ 

      do{ 
       let fetchedData = try JSONSerialization.jsonObject(with: data!, options: .mutableLeaves) as! NSArray 
       //print(fecthdata) 

       for eachFetchedfiName in fetchedData { 
        let eachfiName = eachFetchedfiName as! [String :Any] 
        let fiName = eachfiName["financial_institution"] as! String 
        let oneYear = eachfiName["one_year"] as! String 
        let twoYear = eachfiName["two_year"] as! String 
        let threeYear = eachfiName["three_year"] as! String 
        let fourYear = eachfiName["four_year"] as! String 
        let fiveYear = eachfiName["five_year"] as! String 


        self.fetchedFiName.append(rates(fiName: fiName, oneYear: oneYear, twoYear: twoYear, threeYear: threeYear, fourYear: fourYear, fiveYear: fiveYear)) 

       } 

       //print(self.fetchedFiName) 
       self.mtgRates.reloadData() 


      } 

      catch{ 
       print("Error 2") 
      } 
     } 

    } 
    task.resume() 
} 


} 
class rates { 

var fiName: String 
var oneYear: String 
var twoYear: String 
var threeYear: String 
var fourYear: String 
var fiveYear: String 

init(fiName: String, oneYear: String, twoYear: String, threeYear: String, fourYear: String, fiveYear: String) { 
    self.fiName = fiName 
    self.oneYear = oneYear 
    self.twoYear = twoYear 
    self.threeYear = threeYear 
    self.fourYear = fourYear 
    self.fiveYear = fiveYear 

} 

} 

이것은 두 번째보기 컨트롤러에서 결과를 전달하려고 시도하는 코드입니다. pickerview에 JSON 데이터에있는 대금업자의 이름을 채우려 고 노력 중입니다 ... 나는이 문제를 며칠 동안 고심하고 있습니다 ... 생각 해봐.

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

    return fetchedFiName[row].fiName 
} 

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

    return fetchedFiName.count 
} 

func numberOfComponents(in pickerView: UIPickerView) -> Int { 

    return 1 
} 

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    lenderName.text = fetchedFiName[row].fiName 
    self.view.endEditing(false) 
} 

답변

0

Investigate이다. 현재보기 컨트롤러를 떠날 때 대상보기 컨트롤러에 값을 설정할 수 있습니다. 코드는 다음과 같습니다.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let destinationViewController = segue.destination as! YourViewController 
    destinationViewController.json = yourJSONObj 
}