Tag: 备份

将NSURLIsExcludedFromBackupKey应用于服务器URL或iPhone上目录的URL?

由于我如何在iPhone上保存一些下载的文件,我正在与应用程序拒绝作斗争。 我已经实现NSURLIsExcludedFromBackupKey但我不清楚,如果我做得正确。 我应该将NSURLIsExcludedFromBackupKey应用于表示服务器上的文件的NSURL,还是以某种方式将其应用于iPhone上保存文件的目录? 这个应用程序被拒绝后,现在我创build了这个: // Get / Create the File Directory on the iPhone NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyDirectory"]; if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil]; // Setup the NSURL where the PNG is located NSURL *imageURL […]

如何使用当前的NSPersistentStore方法在本地和iCloud中创build可共享的Core Data .sqlite备份

我已经花费了相当长的时间来创build一个Core-Data备份的.sqlite文件的备份,并在本地和/或iCloud(无论用户喜欢什么)存储该备份以用于下载,恢复或分享。 让我先说一下,我并不是在谈论将持久存储转移到iCloud以供应用程序用作其数据源。 我只是问在这个问题上创build备份文件。 在2014年,苹果将核心数据SQLite商店的默认日记模式更改为WAL。 https://developer.apple.com/library/content/qa/qa1809/_index.html 随着这一变化,他们build议: 要安全地备份和还原Core Data SQLite存储,可以执行以下操作:使用以下NSPersistentStoreCoordinator类的方法(而不是文件系统API)备份和还原Core Data存储: – (NSPersistentStore *)migratePersistentStore 🙁 NSPersistentStore *)存储toURL:(NSURL *)URL选项:(NSDictionary *)options withType:(NSString *)storeType错误:(NSError **)错误 请注意,这是我们推荐的选项。 在此之前,我一直在使用NSFileManager来创build备份。 有了这个build议,我相信在本地创build备份的正确方法是添加一个新的持久性存储,然后使用NSPersistentStoreCoordinator方法addPersistentStoreWithType:configuration:URL:options:error将该持久性存储迁移到所需的备份位置migratePersistentStore:toURL:options:withType:error 。 我的问题有两个方面: 我以前会将我的数据压缩到NSData之前导出它,并将NSData直接写入文件。 我的文件扩展名将自定义到我的应用程序,通过电子邮件或其他iOS共享方法共享压缩数据。 使用migratePersistentStore:toURL:options:withType:error方法,我现在将得到一个.sqlite文件(及其相应的WAL文件等)在所需的位置,但我不知道如何共享此文件。 如果我压缩文件,不会有我失去了我努力保存的数据的危险,首先使用migratePersistentStore:toURL:options:withType:error ? 我相信是这样,但我确实希望让我的用户能够通过电子邮件等方式共享/保存备份,而现在我不知道该如何做到最好。 我很难理解如何使用migratePersistentStore:toURL:options:withType:error将文件备份到iCloud。 就像上面的共享示例一样,我看到我可以使用addPersistentStoreWithType:configuration:URL:options:error和migratePersistentStore:toURL:options:withType:error在本地获取所需的.sqlite副本,但如果我尝试上传本地文件到iCloud,我担心我会失去使用migratePersistentStore:toURL:options:withType:error工作保存的数据。 我一直在试图看看是否有一种方法可以/应该使用migratePersistentStore:toURL:options:withType:error将新创build的persistentStore直接移动到iCloud,但是我一直没能find任何关于如何这样做还是应该完成。 是否有一个特定的url,我需要用来表明persistentStore的目的地是iCloud? 我将不胜感激关于这些问题的答案可以分享的任何见解。

addSkipBackupAttributeToItemAtURL – > NSString参数?

为了遵循数据存储指南,我必须使用下面的方法添加一个标志来说明不支持iCloud。 但是,这里的参数是NSURL的。 我需要像这样从一行传递一个NSString return [[self offlineQueuePath] stringByAppendingPathComponent:@"SHKOfflineQueue.plist"]; 这是接收URL的方法。 – (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { if (&NSURLIsExcludedFromBackupKey == nil) { // iOS <= 5.0.1 const char* filePath = [[URL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup"; u_int8_t attrValue = 1; int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); return result == 0; } else { // iOS […]

iOS:如何创build我的核心数据库的备份副本? 以及如何导出/导入该副本?

我想为我的应用程序的用户提供创build核心数据库备份的可能性,尤其是在他切换到新设备等情况下。 我该怎么做? 特别是我怎样才能重新导入该文件? 我的意思是让我们说他做了数据库的备份副本,然后更改大量的东西,并希望重置到以前保存的备份副本。 我该怎么做? 谢谢!

是NSURLIsExcludedFromBackupKeyrecursion

我在文档目录中有一个巨大的文件和目录树。 按照build议,我将使用NSURLIsExcludedFromBackupKey来阻止iTunes使用应用程序保存此数据。 我可以在我的根目录URL上使用它一次吗? [rootDirectoryURL setResourceValue:[NSNumber numberWithBool:YES] forKey:@"NSURLIsExcludedFromBackupKey" error:&error]; 或者我将不得不为每个文件调用它?