gpt4 book ai didi

iphone - NSPredicate 用于排除尚未保存在 NSFetchedResultsController 中的 NSManagedObjects

转载 作者:行者123 更新时间:2023-12-03 18:05:53 28 4
gpt4 key购买 nike

构建于 this question ,我设法使用撤消组和单个托管对象上下文来处理添加 Cocktail可以引用现有的Ingredients和/或Brands .

现在我遇到了一个 UI 问题 - 在获取的结果 Controller (按 cocktail.name 排序)中,您可以短暂地看到要添加的 Cocktail 的空行。 。马库斯·扎拉建议:

You can add to the predicate to filter out unsaved objects, for example by using (entity.isTemporaryID == NO).

但是我尝试过的每次迭代都会返回以下形式的错误

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath entity.isTemporaryID not found in entity <NSSQLEntity Cocktail id=4>'

如何执行相当于 [[cocktail objectID] isTemporaryID] 的命令在 NSPredicate

最佳答案

调用是针对 objectID 而不是托管对象:

BOOL isTemporary = [[managedObject objectID] isTemporaryID];

请参阅 Core Data Programming guide 的这一部分了解更多详情。

我不确定为什么您会看到未添加实体的空行。如果实体尚未添加,则应由获取结果 Controller 获取它。听起来您已将实体插入上下文中但尚未填充它。

如果是这种情况,您可以使用谓词来排除部分或全部属性为空的实体。如果您最终经常这样做,您可能需要向类添加一个标志属性,如果实体未处于要显示的状态,该属性将返回 NO(通过自定义 getter)。

关于iphone - NSPredicate 用于排除尚未保存在 NSFetchedResultsController 中的 NSManagedObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2451796/

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