每次重建应用程序或安装新版本时,FileURL都会失效

时间:2015-02-02 16:26:11

标签: ios persistence

我正在保存我正在处理的应用程序中录制的视频和音频文件。以下是网址部分的示例:

@"文件:/// VAR /移动/容器/数据/应用/的 1AADB360-ABA7-493E-AE35-290803AA2EBD /Documents/444571753026.caf"

如果我从testflight重建或安装新版本,则应用程序找不到该文件,如果我保存另一个文件,则URL的粗体部分已更改。我该如何处理?请记住,我已经在appstore上有这个应用程序的版本,如果我可以在没有用户丢失数据的情况下更新应用程序,那将是首选。

1 个答案:

答案 0 :(得分:1)

该标识符可以更改,并且无法保证它始终保持不变。 iOS SDK提供相关的API,因此您不必依赖它,并始终获取文档文件夹的正确路径。您可以使用:

NSURL *directoryURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

这将为您提供应用文档目录的URL。有关目录内的进一步探索:

NSFileManager *fm = [NSFileManager defaultManager];
NSDirectoryEnumerator *enumerator = [fm enumeratorAtURL:directoryURL includingPropertiesForKeys:@[ NSURLNameKey, NSURLIsDirectoryKey ] options:NSDirectoryEnumerationSkipsSubdirectoryDescendants|NSDirectoryEnumerationSkipsHiddenFiles errorHandler:NULL];

如果您知道文件或文件夹的名称,可以使用:

NSURL *fileURL = [directoryURL URLByAppendingPathComponent:directoryName isDirectory:NO];

您可以根据需要配置枚举器,以便根据需要执行。这只是我在其中一个应用中使用的示例。

如果您需要访问NSDocumentDirectory,可以将NSCachesDirectory替换为NSLibraryDirectory或{{1}}。