每次我打开应用程序或从 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 4.2 上打开 Xcode 4.5 项目时出错
在 iOS 设备(iPhone / iPad)上安装应用程序或从 Xcode 创建 .ipa,无需代码签名和开发人员帐户