在iOS7中使用NSBundle访问资源



我在更新应用程序到iOS7 SDK时遇到问题。在我使用iOS 6 SDK和使用NSURL文件夹访问我的mp3文件之前,如下所示:

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

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

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

我不是iOS专家,也没有真正关注iOS7的更新。在应用程序中如何访问自己的资产有任何变化吗?我如何访问我的文件?

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

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

这意味着你可以在给定的子目录中获得特定类型的文件URL,所以你应该使用这个方法调用你的文件名和扩展名。

如果你试图读取该目录下的文件列表,你可以做的是将所有音频文件捆绑在一个zip或gzip文件中,当它第一次被访问时,你可以在文档或应用程序支持目录中提取它,然后你可以使用下面的代码读取它。

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

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

希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新