使用NSBundle访问iOS7中的资产

时间:2014-03-26 15:39:33

标签: ios file assets nsbundle

我在将应用更新到iOS7 SDK时遇到问题。在我使用iOS 6 SDK并使用NSURL访问我的mp3文件之前,对于这样的文件夹:

NSURL *folderURL = [[NSBundle mainBundle] URLForResource:@"" withExtension:@"" subdirectory:@"AudioGuide"];

现在,使用iOS 7 SDK我总是得到folderURL的值为nil,我的音频指南不再找到mp3。

我已经查看了模拟器生成的.app-Bundle(在〜/ Library / Application Support / ...中),我可以看到" AudioGuide"根目录中的文件夹。所以它肯定在那里。

我不是那个iOS大师,并没有真正关注iOS7更新。如何在应用程序中访问自己的资产?如何访问我的文件?

1 个答案:

答案 0 :(得分:0)

- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)extension subdirectory:(NSString *)subpath

的Apple文档
  

返回指定标识的资源文件的文件URL   名称和扩展名,并驻留在给定的包目录中。

这意味着您可以在给定的子目录中获取具有特定类型的文件URL,因此您应该将此方法调用与您的文件名和扩展名一起使用。

如果您正在尝试读取该目录下的文件列表,您可以做的是将所有音频文件捆绑在一个zip或gzip压缩文件中,并在访问它时将其解压缩到Documents或Application Support目录中这是第一次,你可以使用下面的代码阅读它。

NSArray *directories = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *directory = [directories objectAtIndex:0];
NSString *audioDirectoryPath = [directory stringByAppendingPathComponent:@"AudioGuide"];


NSArray *audioFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:audioDirectoryPath];

希望这有帮助!