gpt4 book ai didi

objective-c - NSBundle 文件引用在应用程序重新安装后丢失

转载 作者:行者123 更新时间:2023-11-28 22:43:23 24 4
gpt4 key购买 nike

我使用如下构建的 URL 在 NSUserDefaults 中保存了音频文件的用户首选项:

soundURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audioFile1.m4r", [[NSBundle mainBundle] resourcePath]]];

随后会像这样检索该偏好:

self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:self.audioURL error:&error];

这非常有效,直到最近当该应用通过 TestFlight 进行临时部署以进行 Beta 测试时,我才遇到任何问题。现在,在重新安装应用程序后,声音不会播放。日志记录显示该路径依赖于已随新安装更改的 GUID(或等效项):

file://localhost/var/mobile/Applications/D74D8B09-5B27-4EF9-A344-68304CFE5549/myApp.app/audioFile1.m4r

存储在首选项中,但在后续安装中构建时的 URL 是:

file://localhost/var/mobile/Applications/5F607CD7-6E32-45F0-9897-0DDBACBDD6B0/myApp.app/audioFile1.m4r

所以我的问题是:我做错了吗?如果是这样,正确的方法是什么?为什么这只发生在 TestFlight 下?

最佳答案

您永远不会在文档目录中存储文件的绝对 URL。这是因为当您更新应用程序时,iOS 会使用不同的十六进制名称为该应用程序创建一个新目录。现在您的绝对 URL 引用了错误的位置,并且不会返回正确的文件。

Files Saved During App Updates

When a user downloads an app update, iTunes installs the update in a new app directory. It then moves the user’s data files from the old installation over to the new app directory before deleting the old installation. Files in the following directories are guaranteed to be preserved during the update process:

<Application_Home>/Documents

<Application_Home>/Library

Although files in other user directories may also be moved over, you should not rely on them being present after an update.

请引用iPhoneOSProgrammingGuide了解更多详情

关于objective-c - NSBundle 文件引用在应用程序重新安装后丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852740/

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