gpt4 book ai didi

iphone - 核心数据不获取对象

转载 作者:行者123 更新时间:2023-11-29 04:08:36 25 4
gpt4 key购买 nike

您好,这是我的 NSFetchedResultsController 实现:

-(NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSLog(@"context - %@",self.context);
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Categories" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"name" ascending:YES];
[fetchRequest setSortDescriptors:@[sort]];

[fetchRequest setFetchBatchSize:20];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.context sectionNameKeyPath:nil
cacheName:@"root"];
_fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
// [[self context] fetchObjectsForEntityName:@"Categories" withPredicate:
// nil] ;
return _fetchedResultsController;
}

fetchedResultsController.fetchedObjects 始终为零。 以下是我添加对象的方法:

-(void)addCategoryWithName:(NSString *)name
{
NSLog(@"context - %@",self.context);
Categories *category = (Categories *)[NSEntityDescription insertNewObjectForEntityForName:@"Categories" inManagedObjectContext:self.context];
category.name = name;
NSLog(@"category name - %@",category.name);
category.displayOrder = [NSNumber numberWithFloat:1.0f];
// site.displayOrder = displayOrder;

NSError __block *error;
if (![self.context save:&error]){
NSLog(@"Error saving - %@", [error localizedDescription]);
}
}

没有错误,没有任何错误。如果我在 Documents 目录中看到我的 .sqlite 文件已被修改,但我无法获取任何对象。真的很奇怪,我在其他应用程序中使用了基本相同的代码,而且它工作得很好。

有什么想法吗?

最佳答案

您必须调用performFetch在获取的结果 Controller 上一次。否则它不会获取任何内容,也不会跟踪更改。例如添加

NSError *error;
if (![_fetchedResultsController performFetch:&error]) {
// error handling
}

fetchedResultsController 的末尾getter 方法。

备注:似乎指定 cacheName没有 sectionNameKeyPath可能会导致问题,请参阅 UITableView with NSFetchedResultsController Does Not Load the Second Time 。由于缓存用于缓存节信息,因此如果没有节,则无论如何都不需要它。

更新:前面的评论不再有效,事实证明链接问题中的问题有不同的原因。

关于iphone - 核心数据不获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790674/

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