【发布时间】:2017-06-07 10:59:33
【问题描述】:
我正在使用NSFetchedResultController 的核心数据。在这种情况下,我有n 数量的用户组,用户可以选择特定组或选择all group。所以我手动将All group 标题、static ID 和相关内容添加到数据库中。
NSFetchRequest <IRSUserAssetGroup *> *fetchRequest = [NSFetchRequest fetchRequestWithEntityName: [IRSUserAssetGroup entityName]];
NSSortDescriptor *nameSortDescriptor = [NSSortDescriptor sortDescriptorWithKey: NSStringFromSelector(@selector(assetGroupName))
ascending: YES
selector: @selector(localizedCaseInsensitiveCompare:)];
[fetchRequest setSortDescriptors: @[nameSortDescriptor]];
[fetchRequest setFetchBatchSize: 4];
NSManagedObjectContext *mainContext = [[IRSCoreDataManager sharedManager] managedObjectContext];
NSFetchedResultsController <IRSUserAssetGroup *> *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest
managedObjectContext: mainContext
sectionNameKeyPath: nil
cacheName: nil];
NSError *fetchError = nil;
if (![fetchedResultsController performFetch: &fetchError])
FCALog(@"fetch error: %@", fetchError);
[self setUserAssetGroupFetchedResultsController: fetchedResultsController];
这是我的FRC 代码。我正在使用按名称排序。一些组名以数字开头。因为这个All group没有放在第一位。
这可能All group 总是排在首位吗?
额外:我正在使用带有搜索选项的表格视图
例如:@[@1, @5, @"text", @"aaaaaaa", @"All group"]。这里All group 总是显示在列表的顶部。我怎么能这样排序。
输出:@[@"All group", @1, @5, @"aaaaaaa", @"text"]
【问题讨论】:
-
不要在数据模型中解决这个问题,而是在TableViewDataSource中手动添加静态单元格。所以索引 0 处的对象是你
All groups单元格,只要记住在从FetchedresultsController抓取项目时从索引中减去 1。 -
谢谢。现在,我只是在工作。您如何看待@jonRose 的回答?哪个好,比如效率、速度等,
-
正如我之前提到的,
All group是静态的ID,现在我添加了NSPredicate *allGroupPredicate = [NSPredicate predicateWithFormat:@"%K != %d", NSStringFromSelector(@selector(assetGroupID)), allUserGroupID];并以此为谓词。在cellForRowAtIndexPath上为All group设置静态单元格。这就是你想要表达的意思吗?
标签: ios core-data nsfetchedresultscontroller nssortdescriptor