CoreData のドキュメントを読むことに代わるものは実際にはありません。使用するパターンと構文は、少し足を伸ばさなければまったく明らかではないからです。
つまり、通常はデータ ストアから NSManagedObject サブクラスのインスタンスをフェッチします。
NSManagedObjectContext* moc = [delegate managedObjectContext];
NSEntityDescription* description = [NSEntityDescription entityForName:@"Filter" inManagedObjectContext:moc];
NSSortDescriptor* descriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:description];
[request setSortDescriptors:[NSArray arrayWithObject:descriptor]];
NSError *error;
_enabledFilters = [NSMutableArray arrayWithArray:[moc executeFetchRequest:request error:&error]];
if (error) {
NSLog(@"%@",error.localizedDescription);
}
この例では、「Filter」と呼ばれる NSManagedObject のインスタンスの配列があります。
次に、参照する適切なインスタンスを選択し、単純なドット構文でそのすべての属性にアクセスできます。
Filter* thisFilter = (Filter*)[_displayFilters objectAtIndex:indexPath.row];
cell.label.text = thisFilter.name;
cell.label.backgroundColor = [UIColor clearColor];
NSString*targetName = thisFilter.imageName;
UIImage *image = [UIImage imageNamed:targetName];
cell.image.image = image;
これで、永続データ ストアから情報を取得し、それをアプリ内で使用しました。
逆に、データ ストア内のインスタンスへの書き込みは、NSManagedObject サブクラスのインスタンスの属性を直接設定save
し、コンテキストを呼び出して変更をストアにプッシュするという点で、わずかに異なります。
TL;DR - CoreData ドキュメントに 1 時間か 2 時間費やすのはあなた自身の責任です...