gpt4 book ai didi

iOS 阻止文件备份到 iCloud

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

在我的应用程序中,我必须存储核心数据数据库。我在 xcode 项目导航器中有一些带有默认数据(音频文件、maptiles 等)的组和文件夹。

我发现了很多关于防止文件被备份的信息,例如:我做了什么:

- (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

最佳答案

你做得对。关注苹果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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882825/

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