确实没有什么可以替代阅读 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 文档......