我目前正在优化我的应用。我的表结构简化如下:MainCategory
name
position
hasSubcategories
SubCategory
name
position
belongsToMainCategory
现在,如果用户在第一个视图控制器中选择了一个主要类别,则他将紧挨着另一个类别,显示某个主要类别的所有子类别。到目前为止,使用以下代码:
- (void)setupFetchedResultsController
{
NSError *error = nil;
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"SubCategory"];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"position" ascending:YES]];
[self.mainCategory.managedObjectContext executeFetchRequest:request error:&error];
request.predicate = [NSPredicate predicateWithFormat:@"belongsToMainCategory = %@", self.mainCategory];
self.fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:request
managedObjectContext:self.mainCategory.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
}
现在,我开始怀疑是否需要这样做,因为如果将数据模型设置为主要类别,则所有信息都在
mainCategory.hasSubcategories
中。但是这些对象如何分类?还是像我目前所做的那样,真的真的更容易吗? 最佳答案
我的简单建议是保留该代码。如果您访问mainCategory.hasSubcategories
,则将得到一个未订购的NSSet
。因此,您需要自己订购。
在我的代码中,如果我需要像你一样做,我通常会使用这种模式。这很简单,可以重复使用。此外,如果您担心表演,不必担心。后台的核心数据维护着一个高速缓存,可让您提高检索性能。
如果要加快处理速度,还可以依赖setRelationshipKeyPathsForPrefetching
类的NSFetchRequest
方法。
关于ios - iOS核心数据:是否需要提取子类别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20815000/