使用NSBundle在iOS7中访问资产

问题描述:

我在更新应用程序到iOS7 SDK时遇到问题。之前我用的iOS 6 SDK和访问使用NSURL我的MP3文件这样的文件夹:使用NSBundle在iOS7中访问资产

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

现在,使用了iOS 7 SDK我总是零为folderURL的价值,我的语音导游没有按再也找不到mp3了。

我已经看过模拟器生成的.app-Bundle(在〜/ Library/Application Support/...中),我可以在根目录中看到“AudioGuide”文件夹。所以它确实在那里。

我不是iOS大师,并没有真正遵循iOS7更新。在应用程序中如何访问自己的资产是否发生过任何更改?我如何访问我的文件?

苹果文档为- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)extension subdirectory:(NSString *)subpath

返回由指定 名和扩展名和居住在一个给定的包目录标识的资源文件的文件URL。

这意味着您可以在指定的子目录中获得具有特定类型的文件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]; 

希望这有助于!

+0

非常感谢帮助! – Tobi