【发布时间】:2014-11-11 02:59:16
【问题描述】:
我有一个 iOS 应用程序,它将文件的绝对路径存储在数据库和生成的 html 文档中。我最近刚刚将我的 iPhone 更新到 iOS 8,现在每当我运行该应用程序时,似乎每次重新编译时该应用程序都安装在不同的目录中。例如,在第一次构建/运行时 [[NSBundle mainBundle] bundlePath] 在下一次构建/运行时返回不同的东西。到底是怎么回事?这是苹果的新功能吗?
更新:已创建错误报告
代码示例:
如果我在多次构建/运行中运行以下行,那么每次都会得到不同的结果。
#define kOLD_PATH @"oldPath"
NSString* newPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSString* oldPath = [[NSUserDefaults standardUserDefaults] objectForKey:kOLD_PATH];
NSLog(@"New Path: %@", newPath);
NSLog(@"Old Path: %@", oldPath);
NSLog(@"Result: %@", [oldPath isEqualToString:newPath] ? @"Same" : @"Changed");
[[NSUserDefaults standardUserDefaults] setObject:newPath forKey:kOLD_PATH];
[[NSUserDefaults standardUserDefaults] synchronize];
多次运行后的输出看起来像这样
New Path: /var/mobile/Containers/Data/Application/4FFCE2CB-580D-409A-90CB-EF2B8A1FB653/Library
Old Path: /var/mobile/Containers/Data/Application/B038B2DA-F85D-4E18-A5F1-8635834EC454/Library
Result: Changed
完全披露:在我的应用中,用户导入了一个包含资源的网页 (ePub)。资源与网页一起存储。该网页还访问作为应用程序包一部分的资源。为了在我加载网页时实现这一点,将基本 url 设置为网页所在的目录,并通过绝对文件路径访问包资源。现在文件路径在每次更新时都会更改,这已被破坏。我尝试创建指向捆绑资源的符号链接,但这也导致后续更新失败。
【问题讨论】:
标签: ios objective-c