[iOS] NSFetchRequest:initWithEntityNameをiOS4で使おうとしてエラー

2012/05/18

CoreDataのメモです。同じエラーにあった人向けです。

NSFetchRequestで、データが空(まだ1つもデータが入っていない)のEntityをひっぱってこようとしたら、こんな感じのエラーが出ました。

reason: 'This fetch request xxxxx was created with a string name (Entityの名前), and cannot respond to -entity until used by an NSManagedObjectContext'

そんでググったところ、同じところで詰まっている人がいたです。

>> NSFetchRequest Problem Under iOS 4.3.5

結論としては、
・エラーが出ているのは空のデータを取得しているからではない
・NSFetchRequest: initWithEntityNameはiOS5からのAPIなので、
 iOS4では以下のようにNSEntityDescriptionを使えば大丈夫

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyEntity" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

コード修正したら動いた!

最初、空データのところとか、NSFetchedResultsControllerをその後で使っているからとか、色々と原因を考えたけど、APIのバージョンが対応してないだけっていうオチでした、。テヘぺろ。

Daveさんありがとう。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る