hachinoBlog

hachinobuのエンジニアライフ

ObjectIDでCoreData内から検索する方法

SeminarテーブルとPlaceテーブルを作成して対多のリレーションを作成した。
SeminarテーブルにPlaceテーブルのオブジェクトを持つカラムplaceを定義。
Seminarテーブルのplaceカラムの値を取得しようとしてplaceを指定してNSDictionary型で取得したところ
 というObjectIDが返ってきた。
このObjectIDをもとにPlaceテーブルから情報を取得する場合はNSPredicateで

//ObjectIDが1つの場合
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self == %@", objID];

//ObjectIDが羅列された配列の場合
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self IN %@", objID];

これでPlaceテーブルから情報を取得できた。
それにしてもCoreDataを全然理解できてない。。

そもそもSeminarテーブルのリレーションであるplaceカラムにPlaceテーブルのオブジェクトを格納させているのだから
Seminarテーブルからの検索だけでPlaceの情報も取ってこれるはずなんだけど
setResultTypeでNSDictionaryResultTypeを指定した場合の良い感じの取得の仕方が分からない。
取得するカラムを指定する時にplace.hallnameとか書いてもエラーになるし。。


参考URL
http://blog.9wick.com/2011/12/coredata-fetchedresults-list/