NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath ; } NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"]; NSPersistentStore
•NSPersistentStore vs CKDatabase/CkRecordZoneNSPersistentStore是所有 Core Data 持久存储的抽象基类,支持四种持久化的类型(SQLite 在一个NSPersistentContainer中,通过声明多个的NSPersistentStoreDescription,可以持有多个NSPersistentStore实例(可以是不同的类型)。 NSPersistentStore没有用户鉴权的概念,但可以设置只读或读写两种模式。 由于Core Data with CloudKit需要持久化历史追踪[5]的支持,因此只能同步将SQLite作为存储类型的NSPersistentStore,在设备上,该NSPersistentStore
instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)model; //添加一个持久化的数据接收对象 - (nullable __kindof NSPersistentStore nullable NSDictionary *)options error:(NSError **)error; //移除一个持久化的数据接收对象 - (BOOL)removePersistentStore:(NSPersistentStore
NSPersistentContainer iOS10之前涉及NSManagedObjectContext、NSPersistentStoreCoordinator、NSManagedObjectModel、NSPersistentStore 对.xcdatamodeld文件进行你想要的修改 创建NSPersistentStore的时候,options参数传一个dictionary,值如下: NSDictionary *options = [ documentsURL URLByAppendingPathComponent:@"DataModel.sqlite"]; // Create persistent store(异步创建NSPersistentStore psc = _context.persistentStoreCoordinator; // 备注,如果options参数传nil,表示不支持版本迁移 NSPersistentStore
NSPersistentContainer iOS10之前涉及NSManagedObjectContext、NSPersistentStoreCoordinator、NSManagedObjectModel、NSPersistentStore NSPersistentStore类实例。也称为The Store或者Database。 在iOS10之前,如果需要支持版本迁移功能,需要在创建NSPersistentStore类实例时,传入相应的options参数。 psc = _context.persistentStoreCoordinator; // 备注,如果options参数传nil,表示不支持版本迁移 NSPersistentStore 切换到新版的.xcdatamodeld文件 对.xcdatamodeld文件进行你想要的修改 创建NSPersistentStore的时候,options参数传一个dictionary,值如下:
NSManagedObjectModel(托管对象模型)•NSManagedObjectContext(托管对象上下文)•NSPersistentStoreCoordinator(持久化存储协调器)•NSPersistentStore NSPersistentStore NSPersistentStore(持久化存储)是所有 Core Data 持久存储的抽象基类,通过指定存储类型(SQLite、Binary、XML 和 Memory 需要注意的是,此处所说的内存模式对应的存储类型仍为 SQLite(并非 NSPersistentStore 支持的四种存储模式之一的内存模式),通过将持久化存储的存储路径设置为/dev/null,从而达到只在内存中保存数据的效果
把方法- (nullable __kindof NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration
把方法- (nullable __kindof NSPersistentStore )addPersistentStoreWithType:(NSString )storeType configuration
它有点像NSFetchRequest :它允许你指定一个想要更新数据的实体;也可以指定一个affectedStores ,它存储了一个接受更新请求的 NSPersistentStore 数组。 NSFetchRequest 抓取数据的时候,我们会先用NSManagedObjectContext 的 executeFetchRequest:error: 方法传入一个NSFetchRequest ,然后请求会被发送到 NSPersistentStore 上执行时, NSManagedObjectContext 会立即制造并返回一个NSAsynchronousFetchResult ,同时 NSAsynchronousFetchRequest 会被发送到 NSPersistentStore 你现在可以继续编辑这个NSManagedObjectContext 中的 NSManagedObject ,等到NSPersistentStore 执行请求完毕时会将结果返回给NSAsynchronousFetchResult
(NSManagedObject),托管对象上下文 (NSManagedObjectContext),持久化存储协调器 (NSPersistentStoreCoordinator),以及持久化存储 (NSPersistentStore
(NSManagedObject),托管对象上下文 (NSManagedObjectContext),持久化存储协调器 (NSPersistentStoreCoordinator),以及持久化存储 (NSPersistentStore
NSFetchRequest 抓取数据的时候,我们会先用NSManagedObjectContext 的 executeFetchRequest:error: 方法传入一个NSFetchRequest ,然后请求会被发送到 NSPersistentStore 上执行时, NSManagedObjectContext 会立即制造并返回一个NSAsynchronousFetchResult ,同时 NSAsynchronousFetchRequest 会被发送到NSPersistentStore 你现在可以继续编辑这个NSManagedObjectContext 中的 NSManagedObject ,等到NSPersistentStore 执行请求完毕时会将结果返回给NSAsynchronousFetchResult 它有点像NSFetchRequest :它允许你指定一个想要更新数据的实体;也可以指定一个affectedStores ,它存储了一个接受更新请求的 NSPersistentStore 数组。
NSPersistentStore 的元数据Q:NSPersistentStore 的元数据是否保存在磁盘上?可以用其了解设备是否执行了某种云迁移或其他活动吗?
A:你应该使用 NSPersistentStore 上的 NSPersistentStoreRemoteChangeNotificationOptionKey 选项启用远程更改通知这一方法。
NSManagedObject子类的实例,通过NSManagedObjectModel托管对象模型,把托管对象保存到持久化存储协调器NSPersistentStoreCoordinator持有的一个或者多个持久化存储区中NSPersistentStore
•canModifyMangedObject(in:NSPersistentStore)指示是否可以可以更改特定的持久化存储。使用此方法确定用户能否将记录写入CloudKit数据库。
转换成对应的 NSPersistentStoreRequest ,并调用自身的 executeRequest(_:with:)方法,将 “获取请求” 和发起请求的 “上下文” 一并发送给所有的持久化存储( NSPersistentStore