使用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];
希望这有助于!
非常感谢帮助! – Tobi