You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CoreData与Swift中仅获取已保存至Context的对象并忽略临时对象

解决CoreData FetchRequest只返回已保存对象的方法

你可以通过给FetchRequest添加**谓词(Predicate)**过滤掉临时未提交的对象,核心逻辑是利用CoreData对象的objectID属性:未保存的临时对象的objectID.isTemporaryID会返回true,我们只需筛选出该值为false的对象即可。

修改后的代码如下:

FetchRequest(
    sortDescriptors: [SortDescriptor(\.name, order: .forward)],
    predicate: NSPredicate(format: "objectID.isTemporaryID == NO")
)

如果想要更类型安全的写法,也可以使用Swift键路径:

FetchRequest(
    sortDescriptors: [SortDescriptor(\.name, order: .forward)],
    predicate: NSPredicate(format: "%K == NO", #keyPath(NSManagedObject.objectID.isTemporaryID))
)

补充说明

  • 这个谓词会让FetchRequest仅查询已持久化到Context中的对象,自动排除未保存的临时实例。
  • 若你在其他业务逻辑中需要区分临时/已保存对象,也可以直接用managedObject.objectID.isTemporaryID这个判断条件。

内容的提问来源于stack exchange,提问作者christophriepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:29:53