gpt4 book ai didi

ios - FetchedResultController 中没有任何部分

转载 作者:行者123 更新时间:2023-11-29 12:41:33 25 4
gpt4 key购买 nike

我插入并保存托管对象:

  MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

MyCity* city = (MyCity*)[NSEntityDescription insertNewObjectForEntityForName:@"City" inManagedObjectContext:context];
city.cityId = dict[@"id"];
city.cityName = dict[@"name"];

NSError *error;
if (![context save:&error]) {
NSLog(@"error: %@", [error localizedDescription]);
}

我执行 FRC 请求:

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

这是我的 FRC:

  if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"City"
inManagedObjectContext: context];
NSSortDescriptor *sd1 = [[NSSortDescriptor alloc] initWithKey:@"cityName" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sd1, nil];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setFetchBatchSize:10];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath: @"cityName"
cacheName: @"cache"];
[self setFetchedResultsController: theFetchedResultsController];
_fetchedResultsController.delegate = self;

return _fetchedResultsController;
}

performFetch 之后我看到:

_fetchedResultsController.fetchedObjects //array of MyCity objects
_fetchedResultsController.sections //empty array

为什么 _fetchedResultsController.sections 是空的?

当我不使用 [context save:&error] 时,我可以在 _fetchedResultsController.sections 中看到对象数组。

在我的代码中保存上下文有问题吗?我应该如何保存 nsmanagedobject 和 nsmanagedcontext ?

最佳答案

也许 dict 是空的,所以 cityName 是空的并且没有节标题。

此外,您应该持有对托管对象上下文的引用,而不是反复去您的应用程序委托(delegate)来获取它。

我还建议在不使用 fetchBatchSize 和使用 cache:nil 的情况下测试您的代码,并在以后进行优化。

另请注意,通常的模式是在返回之前懒惰地创建 FRC 时进行提取。然后,您可以将其nil 出来以生成提取,或在现有实例上调用performFetch

关于ios - FetchedResultController 中没有任何部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24754958/

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