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

我将.mp3存储在我的i​​OS应用程序文档目录中,并将path保存到Core Data。 当我重build应用程序Xcode似乎将应用程序数据移动到不同的目录,从而使存储的path无效。 为什么会发生这种情况,保存文件path的最佳做法是什么?

我正在使用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 

重build后文件的位置:

 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 

iOS 8.0开始 ,每次重build代码时,应用程序文件夹(包含文档和库目录)的名称都会更改。 这是预期的行为。

所以如果你想存储一个path,你应该只存储文件名,然后将其与文件目录的位置结合起来。 这样,它总是会指向正确的位置。

文档目录的内容将保留,即使它所在的文件夹的名称将从构build变为构build。

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

请参阅: 技术说明TN2406