January 2010 Archives

久しぶりに技術ネタ。
iPhoneでRSSを読み込むやつを作ってるんだけど、NSURLConnectionのエラーハンドリングってどうすればいいのかいまいち分からなかったのでまとめます。



まずNSURLConnectionのdelegateには主に以下のメソッドがあります。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
HTTPヘッダーを取得したら呼び出される

-(void) connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
データを取得するたびに呼び出される

-(void)connectionDidFinishLoading:(NSURLConnection*)connection
データの取得がすべて終了したら呼び出される

-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error
エラーが発生した場合に呼び出される




さて、エラーについては大まかに以下のものが考えられると思います。

1) URLが間違っている(ドメイン部分が間違っている) 
2) URLが間違っている(ドメイン以下が間違っている)
3) そもそもネットワークが利用できない状況
4) その他


4)は置いておいて、ひとつづつ見ていこうと思います。


1) URLが間違っている(ドメイン部分が間違っている)
→他のdelegateメソッドは呼ばれずに、didFailWithErrorが呼ばれる。

2) URLが間違っている(ドメイン以下が間違っている)
→404のレスポンスを受け取るため、didFailWithErrorは呼ばれずに他のdelegateメソッドが呼ばれる。

3) そもそもネットワークが利用できない状況
→他のdelegateメソッドは呼ばれずに、didFailWithErrorが呼ばれる。



以上からエラーハンドリングをする箇所が二カ所必要であることが分かります。

1. didReceiveResponse内でhtmlヘッダのチェック
2. didFailWithError内でのエラーチェック



ではどのように実装するか。

1. didReceiveResponse内でhtmlヘッダのチェック
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
	int statusCode = [((NSHTTPURLResponse *)response) statusCode];
	if(statusCode >= 400){
		//エラーハンドリング
	}
}
didRecieveResponse内でヘッダを取得し、値に応じてエラーハンドリングします。


2. didFailWithError内でのエラーチェック
-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error{
	NSLog(@"Connection failed! Error - %@ %d %@",
		  [error domain],
		  [error code],
          [error localizedDescription]);
	
	//ネットワークに接続されていない時
	if([error code] ==  NSURLErrorNotConnectedToInternet){
		[self cancelByConnection];
		return;
	}
}
上記ソースではネットワークに接続されていない時のエラーしかハンドリングしてませんが、
[error code]をNSURLErrorの定数で振り分けることでハンドリング可能です。

didFailWithError内でどうエラーハンドリングすればいいか、なかなか情報がなくて苦労しました。。

【Mac】MacでJUDE Communityを使う

| | Comments (0) | TrackBacks (0)
僕は設計時にUMLのモデリングをする時には、
JUDE Communityを使ってるのですが
家の環境はMacなのでMacでも使いたいなーと思っていたところ、
方法を発見しました!

http://seino-takahiro.blogspot.com/2009/02/jude-mac-os-x.html

jude.jpg

素晴らしい!
完璧です!
なんかJUDEからastahになったみたいだけど、judeファイルも問題なく開けます。

javaだからマルチプラットフォームではあるんだろうけど、ここまで問題ないとは。。
すげーな!感動した!


2009年のライブまとめ

| | Comments (0) | TrackBacks (0)
明けましておめでとうございます!
忘れないうちに去年行ったライブまとめてみた。

今年は自分もライブしないとな。
ライブ1年してないよ。。



2/18 LIQUIDROOM
SCREAM OUT IN JAPAN 2009

2/24 日本武道館
ERIC CLAPTON JAPAN TOUR 2009

3/5 赤坂BLITZ
IN FLAMES / LAMB OF GOD / UNEARTH

4/4 横浜アリーナ
Mr.Children Tour 2009 ~終末のコンフィデンスソングス~

5/15 日本武道館
Mr.Children Tour 2009 ~終末のコンフィデンスソングス~

6/13 CLUB CITTA'
重音楽祭

8/7 ~ 8/9 千葉マリンスタジアム&幕張メッセ
SUMMER SONIC 09

10/18 幕張メッセ
Loud Park 09

12/27 東京ドーム
Mr.Children DOME TOUR 2009 ~SUPERMARKET FANTASY~



ミスチルの年だったなぁ

Archives