せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

FESSとJSONその4

f:id:Sediment:20150308140937p:plain
 シミュレータ初回起動時は必ずビルドに失敗するの、何とかならないすかね。「Lost Connection to "iPhone6".」って奴。
 さて、今回はNSURLSessionと通信エラー、Alertviewの機能テスト。

csny/fess-json · GitHub
 作ったものはここにあるtest150。

完成画像

f:id:Sediment:20150308141152p:plain

作成手順

1.TableViewControllerにコードを入れてビルドして終わり。


f:id:Sediment:20150308142131p:plain
 今までの作りだと、通信エラー時にアプリ丸ごと落ちてしまうし、タイムアウトするにしても時間がかかった。そこで、deprecatedされたと巷で話題のAlertViewで通知し、通信セッションに割り込んで中断してアプリを落とさないようにした。

 エラーって何じゃらほいと思ったので、IPアドレス"192.168.0.999999"というURLでアクセスした場合のエラーを出力してみた。強そうなアドレスでしょ? すると、エラーコード-1003のほか、よくわからん理由なども返ってきた。タイムアウトの場合は-1001だったが、やっぱりわかる内容ではなかった。特定のエラーが気になる人が気にするべき内容だな。エラー処理なんかやり出したらキリがない。

if (json==nil || (error)) {
//エラー時の処理記載
}

 エラー判定はコードこの部分。エラー変数に何か入っていた、またはHTTPでダウンロードしたデータが空だった場合に中断処理をするという質実剛健な作り。


f:id:Sediment:20150308150051p:plain
 あとは、今まで、httpの通信をNSURLConnectionというクラスで処理していたが、NSURLSessionという新しいのが出てるらしいのでそれを試してみた。
 これが妙な作りで、コードの一番最後に入れた"TaskResume called"という表示が、一番最初に出力される。本当に、コード末尾のtask resumeから通信を始めているらしい。
 コードはこの辺を適当に見てくれ。AlertViewはiOS7と8で場合分けした。
fess-json/RootViewController.m at master · csny/fess-json · GitHub