每次重建应用程序或安装新版本时,FileURL 都会无效
FileURL gets invalid each time I rebuild the application or install a new version
我正在将正在录制的视频和音频文件保存在我正在使用的应用程序中。这是 URL 部分的示例:
@"file:///var/mobile/Containers/Data/Application/1AADB360-ABA7-493E-AE35-290803AA2EBD/Documents/444571753026.caf"
如果我从 testflight 重建或安装新版本,应用程序找不到该文件,如果我保存另一个文件,URL 的粗体部分已更改。我该如何处理?请记住,我已经在 Appstore 上拥有此应用程序的一个版本,如果我可以在不让用户丢失数据的情况下更新该应用程序,那将是首选。
该标识符可以更改,并且不能保证它将始终保持不变。 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
。
我正在将正在录制的视频和音频文件保存在我正在使用的应用程序中。这是 URL 部分的示例:
@"file:///var/mobile/Containers/Data/Application/1AADB360-ABA7-493E-AE35-290803AA2EBD/Documents/444571753026.caf"
如果我从 testflight 重建或安装新版本,应用程序找不到该文件,如果我保存另一个文件,URL 的粗体部分已更改。我该如何处理?请记住,我已经在 Appstore 上拥有此应用程序的一个版本,如果我可以在不让用户丢失数据的情况下更新该应用程序,那将是首选。
该标识符可以更改,并且不能保证它将始终保持不变。 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
。