魔法logging和iCloud启用/禁用

如何使用魔法logging处理以下stream程? 假设我的应用程序启用function来打开/closuresiCloud同步。

  1. 用户安装应用程序。 在启动时,他被问及iCloud的首选项。 他的select:不要使用iCloud。
  2. 用户在应用程序中创build一些数据。 然后,他决定将其存储在iCloud中,并启用iCloud。
  3. 后来由于某种原因,用户在应用程序中禁用了iCloud。 数据应该保留在本地。

如何正确设置魔法logging?

更新:

源代码

在iOS 7中实现一个开关来启用或禁用iCloud也是很容易的,尽pipe对于大多数应用程序来说这可能不是必须的。 由于当创buildiCloud选项传递给NSPersistentStore时,API现在会自动创build单独的文件结构,因此我们可以在本地和iCloud存储之间使用相同的存储URL和许多相同的选项。 这意味着从iCloud存储切换到本地存储可以通过将iCloud持久存储迁移到具有相同选项的相同URL以及NSPersistentStoreRemoveUbiquitousMetadataOption来完成。 此选项将从商店中分离无处不在的元数据,并专门为这些types的迁移或复制场景而devise。 这是一个示例:

- (void)migrateiCloudStoreToLocalStore { // assuming you only have one store. NSPersistentStore *store = [[_coordinator persistentStores] firstObject]; NSMutableDictionary *localStoreOptions = [[self storeOptions] mutableCopy]; [localStoreOptions setObject:@YES forKey:NSPersistentStoreRemoveUbiquitousMetadataOption]; NSPersistentStore *newStore = [_coordinator migratePersistentStore:store toURL:[self storeURL] options:localStoreOptions withType:NSSQLiteStoreType error:nil]; [self reloadStore:newStore]; } - (void)reloadStore:(NSPersistentStore *)store { if (store) { [_coordinator removePersistentStore:store error:nil]; } [_coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[self storeURL] options:[self storeOptions] error:nil]; } 

从本地商店切换回iCloud同样简单, 只需使用启用了iCloud的选项进行迁移,并将具有相同选项的持久性存储添加到协调器。

(c) http://www.objc.io/issue-10/icloud-core-data.html