gpt4 book ai didi

ios - 无法从 iCloud 迁移永久存储

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:11:24 25 4
gpt4 key购买 nike

我正在尝试从我的应用程序中的 NSPersistentStore 中删除 iCloud 同步功能。迁移不会返回任何错误,但是,支持 iCloud 的持久存储中的数据在迁移后会消失。

以下是我的相关代码:

-(void)setUpCoreDataStackWithICloud
{
//Set up the model and context.
self.model = [NSManagedObjectModel mergedModelFromBundles:nil];
self.context = [[NSManagedObjectContext alloc]init];
[self.context setMergePolicy:NSMergeByPropertyObjectTrumpMergePolicy];

if ([self isiCloudEnabledOnThisDevice]==YES) {
[self setUpiCloud];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:[NSNumber numberWithBool:YES] forKey:@"lastLaunchOfAppiCloudWasEnabled"];

}else self.psc = [self persistentStoreCoordinatorForUserWithoutiCloudEnabled];

[self.context setPersistentStoreCoordinator:self.psc];
}
-(NSPersistentStoreCoordinator*)persistentStoreCoordinatorForUserThatAlreadyMigratedToiCloud
{
NSLog(@"persistentStoreCoordinatorForUserThatAlreadyMigratedToiCloud called");
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:self.model];

NSError *error = nil;

NSPersistentStore *store = [psc addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:[self newStoreURL]
options:[self iCloudStoreOptions]
error:&error];
if (!store) {
NSLog(@"failed to add store with error %@", [error localizedDescription]);
}else NSLog(@"successfully added store for user that has already migrated to iCloud");


NSDictionary *migrateOptions = @{ NSPersistentStoreRemoveUbiquitousMetadataOption : @YES,
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES};

NSError *migrationError = nil;

NSPersistentStore *migratedStore = [psc migratePersistentStore:store toURL:[self testNewestStoreURL] options:migrateOptions withType:NSSQLiteStoreType error:&migrationError];

if (migrationError) {
NSLog(@"Migration from iCloud enabled persistent store was unsuccessful. %@", migrationError.localizedDescription);
}else NSLog(@"The migration from the iCloud enabled persistent store was successful");

NSLog(@"The migrated store is %@", migratedStore);

return psc;
}

-(NSURL*)testNewestStoreURL{
NSString *path = [self itemArchivePathWithAppendedString:@"test.data"];
NSURL *storeURL = [NSURL fileURLWithPath:path];
return storeURL;
}

-(NSURL*)newStoreURL
{
NSString *path = [self itemArchivePathWithAppendedString:@"cloudstore.data"];
NSURL *storeURL = [NSURL fileURLWithPath:path];
return storeURL;
}

最佳答案

它不起作用的原因是因为我也在使用映射模型进行架构迁移。根据文档,iCloud 不支持此功能。即使我试图摆脱 iCloud,它也不允许在涉及架构迁移时访问数据。

关于ios - 无法从 iCloud 迁移永久存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33727390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com