4

通常当尝试通过它在我的应用程序中加载特定资源[[NSBundle mainBundle] pathForResource:@"iphone" ofType:@"splang"]时工作正常,但每隔一段时间就会返回 nil 。有问题的 iphone.splang 文件是一个约 275 KB 的文本文件,它肯定与应用程序捆绑在一起(通常可以加载就证明了这一点)。

我已经验证它是 pathForResource:ofType: 返回 nil,而不是 mainBundle 方法。

4

1 回答 1

1

这可能是国际化的问题。根据文档, pathForResource 仅在找不到文件时才返回 nil 。但它也说:

该方法首先在指定包的非本地化资源目录中查找匹配的资源文件。[...] 如果找不到匹配的资源文件,它会在任何可用的特定语言“.lproj”目录的顶层查找。(特定语言目录的搜索顺序与用户的偏好相对应。)它不会在这些位置的任何其他子目录中递归。

也许您正在使用不同语言或模拟器的不同机器上尝试您的代码。

此外,[NSBundle mainbundle]可以返回 nil,因此对其执行任何调用也将返回 nil。

[...] 请务必检查返回值以确保您拥有有效的捆绑包。

于 2012-11-01T11:40:30.977 回答