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

Posted

技术标签:

【中文标题】每次我打开应用程序或从 Xcode 运行它时,IOS 都会创建新的应用程序 ID【英文标题】:IOS creates new Application ID everytime I open the app, or run it from Xcode 【发布时间】:2014-09-25 22:28:29 【问题描述】:

随着升级到 ios8 和 Xcode 6.0.1,我注意到在我的应用程序中添加图像、将它们写入文件和显示它们已经运行了 2 年多。它在拍摄照片并保存时工作正常 - 它显示得很好。我将 FilePath 存储在 Core Data 中。但只要我关闭应用并重新打开,或再次运行模拟器,它就会消失。

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

我找了这个,但找不到任何答案。有没有其他人看到这个并且对我如何解决它有任何建议。非常感谢!

凯特

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

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSLog(@"documents directory %@", documentsDirectory);

【问题讨论】:

你能发布你的代码吗? 已添加,谢谢回复 【参考方案1】:

存储您的相对路径,而不是绝对路径。出于安全考虑,App 容器在每次启动时都会更改。

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

这是 iOS8 为增强安全性所做的新更改,因此您永远不要保留绝对路径。

【讨论】:

【参考方案4】:

您保存的是文件名而不是文件 URL。每次使用文件 URL 时,都会通过计算属性从文件名生成文件 URL。

【讨论】:

以上是关于每次我打开应用程序或从 Xcode 运行它时,IOS 都会创建新的应用程序 ID的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 11.3 - 无法在设备上运行

在 Xcode 4.2 上打开 Xcode 4.5 项目时出错

在 iOS 设备(iPhone / iPad)上安装应用程序或从 Xcode 创建 .ipa,无需代码签名和开发人员帐户

无法构建或存档运行良好的 Xcode 项目

XCode 4.6 继续下载 Doc Set

无法在 xCode 6 或更高版本中打开故事板或 xib 文件