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

CoreData持久历史追踪是否支持Objective-C旧版堆栈及非NSPersistentContainer?

CoreData持久历史追踪对Objective-C旧手动堆栈的支持情况

持久历史追踪(Persistent History Tracking)完全支持Objective-C语言编写的、手动搭建的旧版CoreData堆栈,并非仅局限于iOS 10+的NSPersistentContainer。

实现的核心是在配置持久存储时开启对应选项,和堆栈是否通过NSPersistentContainer初始化无关:

  • 在手动创建NSPersistentStoreCoordinator并添加持久存储时,调用addPersistentStoreWithType:configuration:URL:options:error:方法,传入包含NSPersistentHistoryTrackingKey且值为@YES的选项字典。
  • 通常建议同时开启NSPersistentStoreRemoteChangeNotificationPostOptionKey,以便接收变更通知配合历史追踪使用。

以下是Objective-C的代码示例:

// 构建存储选项字典
NSDictionary *storeOptions = @{
    NSPersistentHistoryTrackingKey: @YES,
    NSPersistentStoreRemoteChangeNotificationPostOptionKey: @YES
};

// 为持久存储协调器添加开启历史追踪的存储
NSError *error = nil;
NSPersistentStore *store = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                                                     configuration:nil
                                                                               URL:yourStoreURL
                                                                           options:storeOptions
                                                                             error:&error];

需要注意的是,该功能的系统版本要求为iOS 10+/macOS 10.12+/tvOS 10+/watchOS 3+,只要满足系统版本,手动搭建的CoreData堆栈就能正常启用持久历史追踪——NSPersistentContainer只是官方提供的简化堆栈搭建工具,底层依然依赖NSPersistentStoreCoordinator等核心组件,手动堆栈完全可以通过配置选项实现相同功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:02:41