<わからないこと>
実行結果に出てくるこの3つのエラー?メッセージがわかりません…
検索しても、いまいちわかりませんでした。
どなたかご教授お願いします。
・2017-01-22 19:35:47.661718 userApp[13651:1318725] [] ____nwlog_simulate_crash_inner_block_invoke dlopen CrashReporterSupport failed
・2017-01-22 19:35:47.662473 userApp[13651:1318725] [] __nwlog_err_simulate_crash simulate crash failed "nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available"
・2017-01-22 19:35:47.663922 userApp[13651:1318725] [] nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available, dumping backtrace:
[x86_64] libnetcore-856.30.16
0 libsystem_network.dylib 0x0000000112249666 __nw_create_backtrace_string + 123
1 libnetwork.dylib 0x0000000112527006 nw_socket_add_input_handler + 3164
2 libnetwork.dylib
<作成しているアプリケーション>
アプリケーションで自作のwebサーバにアクセスして、データを取ってくるiOSアプリケーションを作成しています。
コード上のエラーメッセージは出ておらず、
欲しいデータのIDを入力して、検索ボタンを押すと、
Labelに検索結果のデータを表示するもので、
実行結果を見たところ、Webサーバからデータは取ってこれているようなのですが…
JSON解析のdoにうまく入っていないのではないかなと思います。
(初心者なので、合っているかわかりませんが、私はそうなのかな…?と思っています。間違えていたら教えてください。!!)
実行結果は、写真の感じです。
Swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var setaiIDTextField: UITextField! 6 7 @IBOutlet weak var resultLabel: UILabel! 8 @IBAction func tapReturn() { 9 } 10 /* @IBOutlet weak var setaiNameLabel: UILabel! 11 @IBOutlet weak var setaiIDTextField: UITextField! 12 @IBOutlet weak var resultLabel: UILabel! 13 @IBAction func tapReturn() { 14 } 15 */ 16 17 //@IBAction func tapSearch() { 18 @IBAction func tapSearch() { 19 print("tapped") 20 21 guard let setaiIDText = setaiIDTextField.text else { 22 //値がnilだったら終了 23 print("nil") 24 return 25 } 26 27 // リクエストするURLを作る 28 //let urlStr = "http://192.168.0.16:3000/setai_masters/?usernamber=\(setaiIDText)" 29 let urlStr = "http://192.168.0.16:3000/setai_masters/1" 30 31 if let url = NSURL(string: urlStr){ 32 print("if in") 33 // urlオブジェクトがnilでなかったら、検索処理オブジェクトを作る 34 let urlSession = URLSession.shared 35 print("made object") 36 // 「検索処理が完了したら、onGetAddressを呼び出す」というタスクを作る 37 let task = urlSession.dataTask(with: url as URL, completionHandler: self.onGetData) 38 // タスクの実行 39 task.resume() 40 print("task start") 41 } 42 } 43 //検索処理が完了したら実行する 44 func onGetData(data: Data?,res: URLResponse?, error: Error?){ 45 print("data get") 46 // 受け取ったdataをJSON解析する。エラーになったらcatchへジャンプする 47 do{ 48 // dataのJSON解析実行 49 let jsonDic = try JSONSerialization.jsonObject(with: data!, options:JSONSerialization.ReadingOptions.mutableContainers ) as! NSDictionary 50 print("JSON analysis start") 51 // 解析できた値を調べる 52 if let code = jsonDic["code"] as? Int{ 53 // codeという項目が整数なら、住所検索APIからのコード情報 54 if code != 200{ 55 if let errmsg = jsonDic["message"] as? String{ 56 print(errmsg) 57 //dispatch_async(dispatch_get_main_queue()){ 58 DispatchQueue.main.async { 59 self.resultLabel.text = errmsg 60 } 61 } 62 } 63 } 64 65 if let data = jsonDic["data"] as? NSDictionary{ 66 if let setai_name = data["setai_name"] as? String{ 67 print("世帯IDは\(setaiIDTextField)です") 68 print("世帯名は\(setai_name)です") 69 //dispatch_async(dispatch_get_main_queue()){ 70 DispatchQueue.main.async { 71 self.resultLabel.text = setai_name 72 } 73 } 74 } 75 } catch { 76 print("エラー") 77 print(data) 78 } 79 80 //確認のためdataを表示する 81 //print("確認用:") 82 print(data!) 83 } 84 85 override func viewDidLoad() { 86 super.viewDidLoad() 87 // Do any additional setup after loading the view, typically from a nib. 88 } 89 90 override func didReceiveMemoryWarning() { 91 super.didReceiveMemoryWarning() 92 // Dispose of any resources that can be recreated. 93 } 94 95} 96 97
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/22 12:43 編集
2017/01/22 11:56 編集
2017/01/22 12:41 編集
2017/01/22 14:12 編集