“[[NSBundle mainBundle] objectForInfoDictionaryKey:]” 有时返回 nil

Posted

技术标签:

【中文标题】“[[NSBundle mainBundle] objectForInfoDictionaryKey:]” 有时返回 nil【英文标题】:"[[NSBundle mainBundle] objectForInfoDictionaryKey:]" sometimes returns nil 【发布时间】:2014-05-12 03:08:52 【问题描述】:

我正在尝试从infoDictionary 中检索一些URLs。 10 次中有 9 次正确返回 URLs。但是,URLs 偶尔会返回 nil。知道是什么导致了这种行为吗?

[NSBundle mainBundle][[NSBundle mainBundle] infoDictionary] 在发生这种奇怪行为时都不为零。只有 URLs 返回 nil。

【问题讨论】:

NSLog(@"infoDictionary: %@", [[NSBundle mainBundle] infoDictionary]); 看看那里有什么。但是您并没有尝试保存到应用程序包中,是吗,这在 ios 中是不可能的。 @Zaph 我没有编写这段代码,所以我试图弄清楚这些 URL 是如何存储在 infoDictionary 中的。当我 NSLog infoDictionary 时,我看不到 URL 的键。无论 URL 是否正确返回,URL 键都不存在。 【参考方案1】:

在 iOS 中,无法写入应用程序包,因此尝试这样做会失败。通常,数据被写入和读取应用程序文档目录中的文件,可以通过以下方式获取:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths firstObject];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:myFileName];

【讨论】:

以上是关于“[[NSBundle mainBundle] objectForInfoDictionaryKey:]” 有时返回 nil的主要内容,如果未能解决你的问题,请参考以下文章