CoreDataで日本語検索が上手くいかない

Posted 2010年6月22日 | Auther dada | Category PC・デジタル | Tag タグ: , , ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

はじめてのあいぱっどあぷり。
略して「はじあい」。

そんなワタクシですが無謀にもCoreDataにまで手を出しています。
で、日本語検索が出来なくてハマったのでメモ。

「day」という項目に曜日が格納されており、
それごとにデータを抽出しようとしています。
「dayList」は曜日一覧をまとめたNSArray。
「gNowDay」は現在表示させたい曜日の番号です。

NSPredicate *preDay = [NSPredicate predicateWithFormat:@"day == '%@'",
	[dayList objectAtIndex:gNowDay]];
[request setPredicate:preDay];

これだとダメでした。
「'%@'」の部分を「'土'」など決め打ちにしたらいけました。

次はうまくいったコード。

NSString *preDayStr = [NSString stringWithFormat:@"day == '%@'",
	[dayList objectAtIndex:gNowDay]];
NSPredicate *preDay = [NSPredicate predicateWithFormat:preDayStr];
[request setPredicate:preDay];

一度NSStringに格納してからやったら出来ました。
そういうもんなのかー。

そしてこれは複合条件の指定。NSCompoundPredicateを使います。
「土曜の東館」とか指定するわけですね。

NSString *preDayStr = [NSString stringWithFormat:@"day == '%@'",
	[dayList objectAtIndex:gNowDay]];
NSPredicate *preDay = [NSPredicate predicateWithFormat:preDayStr];
NSPredicate *preArea = [NSPredicate predicateWithFormat:
	@"areaCode == %d",areaCode];
NSPredicate *allPre = [NSCompoundPredicate
	andPredicateWithSubpredicates:[NSArray arrayWithObjects:
	preArea, preDay, nil]];
[request setPredicate:allPre];

カテゴリー