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
相关产品推荐
相关产品推荐

