gpt4 book ai didi

iphone - 核心数据 : Keypath "objectID" not found in entity

转载 作者:太空狗 更新时间:2023-10-30 03:22:06 29 4
gpt4 key购买 nike

我正在使用带有谓词的 NSFetchedResultsController 在我的应用程序中加载 Documents 列表。我想加载除当前事件文件之外的所有 Documents

我正在使用 Rentzsch 的 MOGenerator创建一个 _Document 类,然后我将所有自定义代码放在 Document 子类中。 _Document 生成类型为 DocumentIDobjectID 属性。

在创建 Controller 的类中,我设置了 Controller 的 currentDocID 属性:

controller.currentDocID = self.document.objectID;

在 Controller 本身中,我像这样延迟加载 fetchedResultsController:

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

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID != %@)", self.currentDocID];
[fetchRequest setPredicate:predicate];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateModified" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

[fetchRequest setSortDescriptors:sortDescriptors];

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;

[aFetchedResultsController release];
[sortDescriptor release];
[sortDescriptors release];

return fetchedResultsController;
}

加载 fetchedResultsController 时,我的应用程序因未处理的异常而崩溃:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath objectID not found in entity <NSSQLEntity Document id=1>'

据我了解,所有 NSManagedObjects 都有一个 objectID,无论是临时的还是永久的。不是这样吗?有什么想法吗?

最佳答案

将谓词更改为读取

[NSPredicate predicateWithFormat:@"self != %@", [self currentDoc]]

其中 currentDoc 是对代表当前文档的 NSManagedObject 实例的引用。

Core Data 将在内部进行相等性检查。

关于iphone - 核心数据 : Keypath "objectID" not found in entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2493108/

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