iOS 阻止文件备份到 iCloud
Posted
技术标签:
【中文标题】iOS 阻止文件备份到 iCloud【英文标题】:iOS prevent files from being backed up to iCloud 【发布时间】:2014-05-27 06:50:42 【问题描述】:在我的应用程序中,我必须存储核心数据数据库。我在 xcode 项目导航器中有一些包含默认数据(音频文件、地图块等)的组和文件夹。
我发现了很多关于防止文件被备份的信息,例如: 我做了什么:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
if (_persistentStoreCoordinator != nil)
return _persistentStoreCoordinator;
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"db.sqlite"];
NSLog(@"%@", storeURL.path);
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
//NSDictionary *options = @NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES;
/*NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];*/
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
[self addSkipBackupAttributeToItemAtURL:storeURL];
return _persistentStoreCoordinator;
- (NSURL *)applicationDocumentsDirectory
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
预防方法:
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success)
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
return success;
(最低目标iOS版本为7.0)
这就够了吗?如何检查应用程序现在是否阻止备份核心数据数据库?
在我添加 addSkipBackupAttributeToItemAtURL
方法之前,我检查了应用程序的存储,并在文档和数据下找不到任何内容。我只在备份下找到 3.1 MB -> 我的 iphone
- Install and launch your app
- Go to Settings > iCloud > Storage & Backup > Manage Storage
- If necessary, tap "Show all apps"
- Check your app's storage
【问题讨论】:
【参考方案1】:你做得对。 在 Apple Technical Q&A 1719: How do I prevent files from being backed up to iCloud and iTunes? 之后,您应该使用“不备份”属性进行标记。
对于NSURL
对象,添加NSURLIsExcludedFromBackupKey
属性,防止对应文件被备份。对于CFURLRef
对象,使用相应的kCFURLIsExcludedFromBackupKey
属性。
要知道哪个文件夹更适合存储您的 Core Data 数据库,您可以查看ios Data Storage Guidelines。
【讨论】:
以上是关于iOS 阻止文件备份到 iCloud的主要内容,如果未能解决你的问题,请参考以下文章
IOS 5.1 从文档目录备份/恢复应用程序文件到/从 iCloud