【问题标题】:Accessing assets in iOS7 with NSBundle使用 NSBundle 访问 iOS7 中的资产
【发布时间】:2014-03-26 15:39:32
【问题描述】:

我在将应用更新到 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 的更新。是否对如何在应用程序中访问自己的资产进行了任何更改?如何访问我的文件?

【问题讨论】:

    标签: ios file assets nsbundle


    【解决方案1】:

    - (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];
    

    希望这会有所帮助!

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2018-04-21
    • 2018-01-14
    • 1970-01-01
    • 2022-11-24
    相关资源
    最近更新 更多