对 NSBundle 的行为感到困惑
Posted
技术标签:
【中文标题】对 NSBundle 的行为感到困惑【英文标题】:Confused by behaviour of NSBundle 【发布时间】:2010-02-10 18:00:09 【问题描述】:我有一个 plist 文件,它位于我的 .app 目录的 Templates 目录中。此 plist 文件已加载,因此没有任何问题:
NSDictionary *sqlPropertyList = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:CH_PQ_QUERIES ofType:@"plist"]];
我在同一目录中创建了一个 .txt 文件并尝试以相同的方式加载它:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"excel2004" ofType:@"xml"];
但filePath
始终为空,即使捆绑看起来已加载。
这里发生了什么?为什么允许 plists 位于子目录和其他文件中? plist 文件是否被意外加载,我不应该依赖这种行为?
谢谢
【问题讨论】:
CH_PQ_QUERIES 的值是多少?在测试 plist 加载是否有效之前,您是否清理过项目?您的应用包装器中可能仍然存在 plist 文件的旧副本。 一个.txt
文件还是.xml
文件?
我正在以文本形式读取的 XML 文件。
【参考方案1】:
这可能是一个愚蠢的问题,但您说您创建了一个“txt”文件,但您对pathToResource:ofType:
的调用将xml
指定为类型。那是对的吗?当然,任何此类文件都需要位于您的应用程序包的 Resources
目录中。
【讨论】:
以上是关于对 NSBundle 的行为感到困惑的主要内容,如果未能解决你的问题,请参考以下文章
- [NSBundle pathForResource:ofType] 对 10.7 和 10.8 上的目录的工作方式不同