我想问一个关于文件在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
然后,如何获取捆绑文件的相对路径?
谢谢!
答案 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];
所以我不需要记住完整的路径。