NSBundle pathForResource是NULL

我正在用xcode和objc创build一个简单的应用程序,我需要从一个文件加载一个NSDictionary,但我不能使用NSBundle获取文件的path:

NSString *l = [[NSBundle mainBundle] pathForResource:@"LoginStatuses" ofType:@"plist"]; NSLog(@"%@", l); 

当我运行这个代码时,我得到这个:

2010-10-16 10:42:42.42 Sample [5226:a0f](null)

我不知道为什么。

我创build了一个名为Resources的组,并在那里添加了LogingStatuses.plist: 水库

所以,这是我得到源代码后,这个问题的解决scheme:

我没有真正注意张贴的截图,但目标是“ 命令行工具 ”types…因为那些没有捆绑[NSBundle mainBundle]当然返回nil。 Xcode不会抱怨它不能执行“ Copy Bundle Resources ”步骤,它只是默默地跳过它。

解决scheme是简单地添加一个types为“ Application ”的新目标,以便生成一个基于bundle的应用程序。 然后选中目标成员checkbox,查看新目标的所有来源和资源。 然后,plistpath被正确parsing。

我试图让我的iPhone应用程序使用默认的SQLite数据库和该应用程序无法find它。 原来,我不得不确保.sqlite文件是在资源束中。

  1. select你的项目
  2. select目标
  3. select“构build阶段”选项卡
  4. 打开标有“Copy Bundle Resources”的部分
  5. 拖放您的.sqlite文件到这个部分。

现在你的应用程序会find这个默认的sqlite数据库。

该文件是否真的被包含在目标中(并且将被复制到该包中)? 有两种方法可以找出/设置:

第一种方法:右键单击(或Cmd单击)文件上,select“获取信息”。 然后点击“目标”选项卡,并确保文件检查所需的目标(S)。

第二种方法:右键单击文件浏览器标题上的项目浏览器(或Cmd-clock)(它可能会读取“Groups&Files”)。 然后select“目标成员”。 现在,每个可以成为目标成员的文件旁边都有checkbox(如.m文件或​​资源)。 再次确保您的文件旁边的checkbox被选中。

由于我在这里search了一下,没有find答案,但后来自己发现了,我将把它留在这里…

我有2个文件: tray.pngtray@2x.png视网膜。 这些文件被自动添加到“Copy Bundle Resources”。

但:

 [[NSBundle mainBundle] pathForResource:@"tray" ofType:@"png"]; 

没有返回实际复制到捆绑的文件! 原因是:IDE创build了一个TIFF文件tray.tiff (joint tray.pngtray@2x.png ),所以... ofType:@"tiff"]帮助!

我的问题和解决scheme与Dmitriy Isaev的非常相似。 我试图得到一个xib文件的path。 这两个调用(在Swift中)pathForResource(“myfile”,ofType:“xib”)和pathForResource(“myfile.xib”,type:nil)失败。

解决scheme是使用扩展名“nib”代替:

 pathForResource("myfile", ofType: "nib") 

我今天遇到了一个命令行项目的问题。

幸运的是,解决scheme很简单。 只需点击“Build Phases”,点击“+”并添加一个新的“Copy Files”阶段。 select“资源”作为目的地,并添加您想要使用的任何文件。

现在你仍然可以使用[NSBundle mainBundle] ,它应该工作!

文件名在iPad上区分大小写。 你需要使用小写字母。

确保正确拼写资源的文件名。 我刚刚了解到这一点。 🙂