我正在开发一个应用程序,它结合了其核心数据存储的 iCloud 同步(具有单个存储/模型/上下文的简单应用程序)。由于商店还包含图像数据,因此它有可能变得非常大,因此我想添加一个设置以允许用户根据需要禁用同步。我已经查看了在这两种情况下使用 Core Data 的一些示例代码,在我看来,启用和禁用 iCloud 运行之间的唯一真正区别NSPersistentStoreCoordinator
是添加时传递给的选项。因此,我虽然想做这样的事情:
NSPersistentStoreCoordinator *psc;
NSDictionary* options;
//Set options based on iCloud setting
if ([enableSwitch isOn]) {
options = [NSDictionary dictionaryWithObjectsAndKeys:
@"<unique name here>", NSPersistentStoreUbiquitousContentNameKey,
cloudURL, NSPersistentStoreUbiquitousContentURLKey,
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
} else {
options = nil;
}
//Add the coordinator
if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
//Handle error
}
所以,我对上述问题有几个问题:
- 我的假设是否正确,或者两个州之间是否还有更多需要不同的地方?
- 通常在示例中,此代码在应用程序委托中调用,因此通常每次应用程序运行仅调用一次。当用户切换设置时,是否有一个好的策略来响应必要的更改?
谢谢!