iOS:备份和其他操作后捆绑文件的绝对路径是否会发生变化?如何获取bundle文件的相对路径?

时间:2012-01-22 01:24:36

标签: iphone ios xcode bundle

我想问一个关于文件在iOS中的绝对路径的问题。

我的应用中有很多图标文件,请在此处说明:icons.bundle。

我有一个照片浏览器,向用户显示选择这些图标来表示他们的任务,所以我需要记住数据库中的图标,

我通过以下方式将图标路径放入数组:

iconList = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:@"icons.bundle"];

检查iconList中的字符串后,我发现它们是这样的绝对路径(在模拟器中):

/Users/zhangjeef/Library/Application Support/iPhone Simulator/5.0/Applications/945B3BD0-B44A-4836-9FDA-8DCCB9396F32/ShiftScheduler.app/jobicons.bundle/100-coffee.png

我的问题是,如果我记得数据库中的这个完整路径,它会在iTune的用户备份/恢复应用程序之后发生变化吗? 升级应用程序后,此UUID是否会更改?

945B3BD0-B44A-4836-9FDA-8DCCB9396F32

然后,如何获取捆绑文件的相对路径?

谢谢!

2 个答案:

答案 0 :(得分:2)

iconList = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:@"icons.bundle"];将返回相对路径,因此即使在备份/恢复/更新后也可以安全使用。

答案 1 :(得分:2)

我最终在NSString中使用此方法来获取抽象路径并将其存储在我的数据库中。

NSString theShortPath = [fullPathString lastPathComponent];

当我想要获得完整路径时,我使用

[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"jobicons.bundle/%@", theShortPath] ofType:nil];

所以我不需要记住完整的路径。