gpt4 book ai didi

ios - 带有部分的 FetchedResultsController

转载 作者:可可西里 更新时间:2023-11-01 05:41:50 24 4
gpt4 key购买 nike

我正在编写一个使用 coredata 的小应用程序,我有像主题这样的数据,其中包含数学、科学和其他书籍。

其他书籍可以添加或删除,但数学和科学不能删除,添加新学生时会默认添加。当我获取结果时,我应该获取所有书名,包括数学和科学。

我想要做的是在三个部分中显示数据,标题为数学、科学和其他。 Maths and science 将只包含一行,即 maths 或 science。所有其他书籍都应该在阅读部分。

如何着手实现这一目标?

最佳答案

当您创建 NSFetchResultsController 时,请在获取请求中使用 books 表的实体名称。

然后使用这个...

NSFetchedResultsController *aController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"typePropertyName" cacheName:nil];

typePropertyName 将是从一本书到它所在部分的名称的路径。

如果您直接将它放在 Book 表中,它可能只是@"typeName",或者如果您与名为 type 的表有关系,则它可能是 @"type.name"然后表有一个名为 name 的字段。

无论如何,这将创建一个 NSFetchedResultsController,其中的部分...

完整的代码将类似于...

#pragma mark - fetched results controller

- (NSFetchedResultsController*)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Book"];
[request setFetchBatchSize:20];

NSSortDescriptor *sdType = [[NSSortDescriptor alloc] initWithKey:@"type.name" ascending:YES];
NSSortDescriptor *sdName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[request setSortDescriptors:@[sdType, sdName]];

NSFetchedResultsController *aController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"type.name" cacheName:nil];

aController.delegate = self;
self.fetchedResultsController = aController;

NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _fetchedResultsController;
}

然后在 tableViewController 中你可以有这个...

- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];

return [sectionInfo name]
}

这将使用节名称作为每个节的标题。

关于ios - 带有部分的 FetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com