iPhone iOS Core Data 我应该为我的实体子类化一个抽象实体吗?
Posted
技术标签:
【中文标题】iPhone iOS Core Data 我应该为我的实体子类化一个抽象实体吗?【英文标题】:iPhone iOS Core Data should I subclass an abstract entity for my entities? 【发布时间】:2012-10-18 17:17:44 【问题描述】:目前我的应用中有以下数据模型: 记录是具有时间戳、类型、名称的抽象实体。我有 3 种类型的实体,它们是 Record 的子类。我的 NSFetchedResultsControllers 提取 Record 对象,并在我的表视图中按类对它们进行排序:
Event1 has record as abstract parent, there will be 10000 such events
Event2 has record as abstract parent, there will be 100 such events
Event3 has record as abstract parent, there will be 100 such events
事件 1 由系统生成,事件 2 和 3 由用户创建。
这个系统的目的是在需要所有数据时更容易显示数据。
但是,我遇到了一个问题,我想仅显示部分数据 - 用户创建的事件并允许用户对其进行编辑。
如果我当前的数据模型是一种仅过滤和显示用户事件的有效方法(核心数据必须仅将少数事件与系统生成的事件分开),那我就在徘徊。我应该让系统生成的事件成为一个单独的实体吗?我是否应该担心这样的事情,或者核心数据是否已经足够优化,这样的事情就无关紧要了?
下面是让我问这个问题的 NSFetchedResultsController:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
//system-generated events do not have type defined, while user events do have a type
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF.type > %0"];
[fetchRequest setPredicate:predicate];
//^What are the performnance implications of the above predicate?
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"];
【问题讨论】:
【参考方案1】:亚历克斯,
如果您想要的只是用户事件,那么只需对该实体使用获取请求,而不是超类。
安德鲁
【讨论】:
以上是关于iPhone iOS Core Data 我应该为我的实体子类化一个抽象实体吗?的主要内容,如果未能解决你的问题,请参考以下文章
Core Data iPhone 在插入 50k 记录时,我应该多久调用一次 [managedObjectContext save:&error]?
iPhone iOS在呈现图表时如何处理Core Data中的时间间隔?
iPhone 和 Core Data:如何在更新之间保留用户输入的数据?
如何在 Mac 和 iPhone 之间同步 Core-Data 应用程序?