IOS每次打开应用程序或从Xcode运行时都会创建新的应用程序ID

问题描述 投票:1回答:4

随着升级到IOS8和Xcode 6.0.1,我注意到在已经使用了2年以上的应用程序中添加图像,将它们写入文件并显示它们已损坏。拍摄并保存照片时,它可以正常工作-它可以正常显示。我将FilePath存储在Core Data中。但是,一旦我关闭应用程序并重新打开,或者再次运行模拟器,它就会消失。

我已经跟踪了一个问题,每次它在设备或模拟器上都运行时,文档目录字符串会更改,而APPLICATION ID会更改,因此在路径中找不到图像,因为它似乎无法访问先前的应用程序ID的路径。

我正在寻找这个,找不到任何答案。有没有其他人看过这个,对我如何解决它有任何建议。非常感谢!

凯特

编辑-我已添加此代码示例。每次我运行我的应用程序时,这都是改变的路径。

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSLog(@"documents directory %@", documentsDirectory);
ios ios8
4个回答
2
投票

存储您的相对路径,但不存储绝对路径。为了安全起见,App容器在每次启动时都会更改。

NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES];
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"MyPic"] URLByAppendingPathExtension:@"jpg"];
NSLog(@"fileURL: %@", [fileURL path]);

0
投票

最后,我将文件添加到Core数据中,因为它们是从Core Data对象引用的。


0
投票

这是iOS8中为增强安全性而进行的一项新更改,因此您绝对不应保留绝对路径。


0
投票

您保存文件名而不是文件URL。每次使用文件URL时,都可以通过计算出的属性根据文件名来创建文件URL。

© www.soinside.com 2019 - 2024. All rights reserved.