Hatena::Groupiphone-dev

haoyayoi Dev Style このページをアンテナに追加 RSSフィード

2009-07-18

ImageStoreの画像取得失敗時対処

| 03:48 | ImageStoreの画像取得失敗時対処 - haoyayoi Dev Style を含むブックマーク はてなブックマーク - ImageStoreの画像取得失敗時対処 - haoyayoi Dev Style ImageStoreの画像取得失敗時対処 - haoyayoi Dev Style のブックマークコメント

ImageStoreを使ってクライアントを作っていたのですが、画像取得時に503や404が返ってきた場合でも正常なダウンロードとみなされていたようで、UIImageのメモリ操作時にエラーで落ちることがありました。

HttpClientのconnection:didReceiveResponse:にて、データ詳細の如何(imageではなくtextだった等)に関わらず成功として扱われるのが原因だった様子。とりあえずContent-Typeでimageでは無かった場合にconnection:didFailWithError:へ投げることで対処。

HttpClient.m

- (void)connection:(NSURLConnection*)sender didReceiveResponse:(NSHTTPURLResponse*)aResponse
{
	[response release];
+	NSDictionary *resHead = [aResponse allHeaderFields];
+	NSString *contenttype = [resHead objectForKey:@"Content-Type"];
+	NSArray *datatype = [[contenttype componentsSeparatedByString:@"/"] objectAtIndex:0];
+	if([datatype isEqual:@"image"]){
		response = [aResponse retain];
+	}else{
+		[self connection:sender didFailWithError:nil];
+	}
}

connection:didFailWithError:に投げる代わりに、エラー時代替イメージのNSDataを差し込むようにしむけるのもありです。

iwadoniwadon2009/07/18 12:46フィードには以下のものがあるように見えますがいかがでしょうか。
http://iphone-rejectdb.appspot.com/feed?format=rss2
http://iphone-rejectdb.appspot.com/feed?format=atom

hao_yayoihao_yayoi2009/07/18 20:14feed存在してました。しかもなんか購読してたっぽいです。
未読の中に埋もれてたので、弄って読みやすくすることにします…。