質問: urlSession.dataTaskWithURL(url, completionHandler: self.onGetAddress) // タスクの実行 task.resume() } } //検索処理が完了したら実行する func onGetAddress(data: NSData?,res: NSURLResponse?, error: NSError?){ //確認のためdataを表示する print(data) } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ### 試したこと 以下のページを参考に自分なりに書き直してみましたが...、うまくいきませんでした...。 ・https://blog.areare.net/archives/8321 すみません... 他のページも見てトライしたんですが...どこのページか忘れました... どうかよろしくお願いします ### 補足情報(言語/FW/ツール等のバージョンなど) Xcode ver : 8.1 USE : Swift3
回答: 赤丸内に白丸はポチポチやってればxcodeが変換してくれます。提示のコードをポチポチやっていくと、urlSession.dataTaskに赤丸「!」がひとつ残ると思います。それに関しては`completionHandler`がどういう型の引数でなにを返すのかを確認する必要があります。dataTaskをオプション+クリックすると確認、コマンド+クリックで定義に飛びます。このコードでは`onGetAddress`がcompletionHandlerとして指定されているので、このファンクションの型を調べた結果と同じにします。 ``` open func dataTask(with url: URL, completionHandler: @escaping (Data?, URLResponse?, Error?) -> Swift.Void) -> URLSessionDataTask ``` ``` import UIKit class ViewController: UIViewController { @IBOutlet weak var zipTextField: UITextField! @IBAction func tapReturn() { } @IBAction func tapSearch() { guard let ziptext = zipTextField.text else { // 値がnilだったら終了 return } // リクエストするURLを作る let urlStr = "http://api.zipaddress.net/?zipcode=\(ziptext)" if let url = NSURL(string: urlStr){ // urlオブジェクトがnilでなかったら、検索処理オブジェクトを作る let urlSession = URLSession.shared // 「検索処理が完了したら、onGetAddressを呼び出す」というタスクを作る let task = urlSession.dataTask(with: url as URL, completionHandler: self.onGetAddress) // タスクの実行 task.resume() } } //検索処理が完了したら実行する func onGetAddress(data: Data?,res: URLResponse?, error: Error?){ //確認のためdataを表示する print(data) } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } ```