ios – 带有节的FetchedResultsController

ios – 带有节的FetchedResultsController,第1张

概述我正在写一个小应用程序,其中我使用coredata,我有像主题包含的数据 数学,科学和其他书籍. 可以添加或删除其他书籍,但不能删除数学和科学,添加新学生时默认会添加它们.当我获取结果时,我应该得到所有的书名,包括数学和科学. 我想要做的是在三个部分中显示数据,标题为数学,科学和其他.数学和科学只包含一行,即数学或科学.所有其他书籍都应该在阅读部分. 如何着手实现这一目标? 创建NSFetchRe 我正在写一个小应用程序,其中我使用coredata,我有像主题包含的数据
数学,科学和其他书籍.

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

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

如何着手实现这一目标?

解决方法 创建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全部内容,希望文章能够帮你解决ios – 带有节的FetchedResultsController所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存