複数のテーブルビューを持つアプリケーションがあり、すべてのデータを取得するためにCore Dataを使用したいと思います。私は2つのエンティティを持っています - フリーザーとアイテム。最初のテーブルビューでは、私は冷凍庫を追加し、それは正しく保存されます。私は、アプリケーションを終了し、再オープンし、そこにあります。私はフリーザー(別のテーブルビューを開く)をクリックし、いくつかの項目を追加し、私は新しいセクション化テーブルビューでそれらを見ることができます。私は、私のアプリを終了し、それを再起動し、冷凍庫を参照してください、それをクリックし、項目はありません。複数のTableVIewsからコアデータを保存する
私は自分のmanagedObjectContextをappDelegateに持っており、すべてのビューを使用してそこから参照するので、複数のインスタンスを作成していません。ここで私はmanagedObjectContextと私のitemsArrayの両方、冷凍庫にアイテムを保存するために使用するコードは次のとおりです。ここで
Item *item = (Item *)[NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:[delegate managedObjectContext]];
[item setFreezer:freezerName];
[item setName:name];
[item setQuantity:quantity];
[item setSection:section];
[item setAdded:added];
[item setNotes:notes];
NSError *error = nil;
if (![[delegate managedObjectContext] save:&error]) {
NSLog(@"Freezer info didn't save. Need to handle this.");
}
[items insertObject:item atIndex:0];
は私がのviewDidLoad内のアイテムを取得するためにItemViewControllerに使用したコードは次のとおりです。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"freezer == '%@'", freezerName];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:[delegate managedObjectContext]];
NSSortDescriptor *sorts = [[NSSortDescriptor alloc] initWithKey:@"section" ascending:NO];
NSArray *sort = [[NSArray alloc] initWithObjects:sorts, nil];
[request setSortDescriptors:sort];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error = nil;
NSMutableArray *results = [[[delegate managedObjectContext] executeFetchRequest:request error:&error] mutableCopy];
if(results == nil) {
NSLog(@"Error fetching results... need to handle");
}
[self setItems:results];
NSLog(@"items count:%d", [items count]);
返されたアイテム数はゼロです。
私は完全に困惑していて、オンラインで検索したり、さまざまなことを試したりしていましたが、わかりません。もっとスマートなコーダーがいることは知っています。あなたの誰かが問題の内容を理解できることを願っています。
私はこの提案に感謝しますが、同じ結果が得られます。 –