NSBundle 返回 NULL

Posted

技术标签:

【中文标题】NSBundle 返回 NULL【英文标题】:NSBundle returning NULL 【发布时间】:2012-03-08 08:15:30 【问题描述】:

我使用 pathForResource 已经有一段时间了,但它突然放弃了我。 我在资源中添加了一个名为 untitled.objuntitled.mtl 的附加文件。

以下两行代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"untitled" ofType:@"obj"];
NSLog(@"thePath = %@", path);

untitled.obj 之外,所有其他 *.obj 文件都可以正常工作。

当我使用该文件时,NSLog 的输出什么都没有,所以我假设它由于某种原因无法找到它。

资源也位于 temp.模拟库:

【问题讨论】:

您是如何添加新文件的,它是否包含在您的目标中?选择项目中的文件并检查右侧的检查器 - 您的目标是否已检查? @jrturton,这两个文件都在目标的目标成员中。我将该文件与所有其他 *.obj 文件一样放在目录中,并将它们拖到文件夹中,因为其他文件位于其中。 新更新。我找不到的资源也位于模拟目录中,所以现在更没有意义了。 【参考方案1】:

从您的设备中删除应用程序并重置模拟器中的内容和设置。同时删除项目的派生数据。完成此操作后,再次测试它应该可以工作。

【讨论】:

我删除了应用,重置了内容和设置。删除了 App 模拟文件。并再次尝试。结果还是一样。 “派生数据”是什么意思?谢谢! 转到 Organizer,打开 Projects 选项卡并选择您的项目。您将在前面看到 Derived Data 和一个 Delete 按钮。【参考方案2】:

在我看来一切都是正确的。您是否检查过您没有不小心用尾随空格或其他不可见字符命名文件?尝试将其命名为完全不同的名称(包括更改扩展名),然后重新命名。

【讨论】:

【参考方案3】:

我认为您需要 .plist 文件。那里有 Bundle 名称和标识符。

【讨论】:

我不认为我完全理解你。我已经有一个带有包名称/标识符的 *.plist 文件。 应该没有必要,因为我的目标已经初始化了 *.plist 文件。 然后确保您的 plist 中有捆绑名称、捆绑标识符、捆绑版本、捆绑版本字符串、短、捆绑显示名称、捆绑操作系统类型代码、捆绑创建者操作系统类型代码。这些是自动创建的,但可能出了点问题。我的意见,只要确保 plist 包含所有默认设置。 这里是***.com/questions/7510717/… 我考虑过区分大小写,但事实并非如此。

以上是关于NSBundle 返回 NULL的主要内容,如果未能解决你的问题,请参考以下文章

NSBundle 返回零

NSBundle.mainBundle() 返回 nil

NSBundle 返回 NULL

来自 NSBundle 路径的 NSURL 返回 nil

`NSBundle.mainBundle().URLForResource` 总是返回 `nil`

为啥 [NSBundle 本地化StringForKey] 不返回 iPhone 语言本地化字符串?