如何使用魔法记录来处理以下流程?假设我的应用启用功能可以打开/关闭iCloud同步。
如何正确设置魔法录音?
答案 0 :(得分:4)
在iOS 7中实现启用或禁用iCloud的开关在iOS 7中也要容易得多,尽管对于大多数应用程序来说可能不是必需的。由于API在创建时将iCloud选项传递给NSPersistentStore时会自动创建单独的文件结构,因此我们可以在本地和iCloud存储之间拥有相同的存储URL和许多相同的选项。这意味着可以通过将iCloud持久存储迁移到具有相同选项的相同URL以及NSPersistentStoreRemoveUbiquitousMetadataOption来完成从iCloud存储到本地存储的切换。此选项将使存储中无处不在的元数据解除关联,并专门用于这些类型的迁移或复制方案。这是一个示例:
- (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的选项进行迁移,然后将具有相同选项的持久存储添加到协调器。