gpt4 book ai didi

iphone - 如何正确配置 NSFetchedResultsController

转载 作者:行者123 更新时间:2023-12-03 18:41:13 27 4
gpt4 key购买 nike

我将 NSFetchedResultsController 放入我的代码中,这样我就可以对 TableView 数据进行很好的自动分段。

所以我正在运行测试以确保一切正常。我的持久存储中有一个 Book 实体。我将首先以旧方式执行获取,然后尝试使用 NSFetchedResultsController。 2 个代码块之间的差异只有 2 行。

代码没有 NSFetchedResultsController:

 NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:kBookEntityName inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];

//The following 2 lines will be replaced by the NSFetchedResultsController
NSMutableArray *mutableFetchResults = [[[self.managedObjectContext executeFetchRequest:request error:nil] mutableCopy] autorelease];
Book *result = (Book*)[mutableFetchResults objectAtIndex:0];

NSString* title = [result valueForKey:@"title"];
NSString* priority = [result valueForKeyPath:@"priority.name"];


[request release];

现在我替换 NSFetchedResultsController 的行:

NSFetchedResultsController* fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"title" cacheName:@"BookList"];                                                                                                                                                                                                                                                                                                           

Book *result = (Book*)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

看起来很干净。第一个代码块正确获取单个 Book 实体。然而,带有 NSFetchedResultsController 的代码则不然。相反,它返回零。

我的问题是:在此示例中我是否正确配置了 NSFetchedResultsController?

(注意,NSFetchedResultsController 的 fetchedObjects 属性也是 nil)

最佳答案

我认为您仍然需要告诉 NSFetchedResultsController 实际执行获取:

NSError *error;
BOOL success = [controller performFetch:&error];

(取自 NSFetchedResultsController 引用中的示例)

另一件事看起来很奇怪:你真的想使用“title”作为sectionNameKeyPath吗?这基本上不会为每本书创建一个单独的部分吗?

关于iphone - 如何正确配置 NSFetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1363525/

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