Xcode更改构建时应用程序文件夹的位置

use*_*597 10 filesystems xcode core-data ios ios-simulator

我在我的iOS apps文档目录中存储.mp3并保存Core Data的路径.当我重建应用程序时,Xcode似乎将应用程序数据移动到另一个目录,从而使存储的路径无效.为什么会发生这种情况以及保存文件路径的最佳做法是什么?

我正在使用Xcode 6.2并且过去成功检索了该文件.

下载后文件的位置:

in ~/Library/Developer/CoreSimulator/Devices/82D1931C-590D-45A2-AB9B-8D1D4F2530C5/data/Containers/Data/Application/
$ find . -iname p612.mp3
./1C070BF8-0E2E-4EAC-99B6-C56E48675E6E/Documents/adf07cf85254e8f28f942f2d6fa704ae/p612.mp3
Run Code Online (Sandbox Code Playgroud)

重建后文件的位置:

in ~/Library/Developer/CoreSimulator/Devices/82D1931C-590D-45A2-AB9B-8D1D4F2530C5/data/Containers/Data/Application/
$ find . -iname p612.mp3
./E6C7D0AF-E61C-4BDD-AF4B-68C445E2BB0D/Documents/adf07cf85254e8f28f942f2d6fa704ae/p612.mp3
Run Code Online (Sandbox Code Playgroud)

Cih*_*Tek 14

iOS 8.0开始,每次重建代码时,应用程序文件夹的名称(包含文档和库目录)都会发生变化.这是预期的行为.

因此,如果要存储路径,则只应存储文件名,然后将其与动态文档目录的位置相结合.这样,它总是指向正确的位置.

文档目录的内容将保持不变,即使它所在的文件夹的名称将从构建更改为构建.

// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
Run Code Online (Sandbox Code Playgroud)

参见:技术说明TN2406.