有人让 [[NSBundle mainBundle] pathForResource:ofType:inDirectory] 递归工作吗?
Posted
技术标签:
【中文标题】有人让 [[NSBundle mainBundle] pathForResource:ofType:inDirectory] 递归工作吗?【英文标题】:Anybody gotten [[NSBundle mainBundle] pathForResource:ofType:inDirectory] to work recursively? 【发布时间】:2012-08-08 16:07:27 【问题描述】:我一直在寻找一种在我的主包中递归搜索子目录的方法。乍一看,在 NSBundle 上定义的实例方法“--pathForResource:ofType:inDirectory:”似乎可以完成这项工作。它指定如果您传入“nil”作为资源类型,该方法将搜索所有子目录以查找与资源名称匹配的给定资源。
https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html
我试过这样:
NSString *pathForResource = [[NSBundle mainBundle] pathForResource:spriteFrameName ofType:nil inDirectory:@"images"];
不幸的是,这不起作用。查看文档似乎还说它返回一个 pathNames 数组,即使返回值被声明为“NSString *”。
在谈到递归子目录时,它指向国际化资源,这使我相信递归可能与相关资源语言目录有关,但我不知何故忘记了这种意图。
我是因为没有让它工作而出去吃午饭,还是这只是一个令人困惑的文档?
【问题讨论】:
为什么不知道自己的 app bundle 中的资源路径? 我们有一个构建时工具,可以随机组织我们应用程序中的资源结构。 (我们的艺术家在组织事物方面有一些余地。我需要一些基本文件来查找和验证,尽管有人告诉我这些文件保证存在。) 【参考方案1】:我认为您发现了一个文档错误。
要递归搜索您的捆绑包,请将resourcePath
发送到捆绑包,然后在enumeratorAtPath:
消息中将其传递给NSFileManager
。
【讨论】:
以上是关于有人让 [[NSBundle mainBundle] pathForResource:ofType:inDirectory] 递归工作吗?的主要内容,如果未能解决你的问题,请参考以下文章
`NSBundle.mainBundle().URLForResource` 总是返回 `nil`
NSBundle mainBundle infoDictionary 返回 NULL
“[[NSBundle mainBundle] objectForInfoDictionaryKey:]” 有时返回 nil