2017-02-26 19 views
0

我找不出任何韵律或原因如何pathForResource工作......或更合适,不。'NSBundle mainBundle'pathForResource奇怪的行为

我在我的应用程序中有一堆笔尖,它们都正确地在/ Build Phase/Copy Bundle Resources中。

他们也在File Inspector选项卡上的Target Membership中正确勾选。

为了简洁,我只在这里显示2个案例。 当我到达我使用pathForResource的代码部分时,会得到任意且不一致的结果。即使所有我的笔尖被命名为____。厦门国际银行,在某些情况下,只有这样我得到一个结果回从pathForResource是,如果我要求xml和其他时间我要问nib

任何人有一个想法,为什么这种行为是不一致的?

enter image description here

回答

2

这些结果似乎并不特别出乎意料的或不一致的给我。

.xib文件是NIB的源文件。他们不应该将直接复制到应用程序中。它们在构建时编译为.nib文件,并且它们被复制到应用程序中的那些.nib文件。您不应该期望pathForResource:... ofType:@"xib"在您的应用程序中找到.xib文件。如果是这样,你已经搞砸了应用程序的构建。 .xib文件在运行时无用。

大概与此无关,你有一个在Copy Bundle Resources构建阶段的文件TabSale.xml。该文件直接复制。如果您不打算复制原始XML文件 - 例如,如果这是一个在构建时应该转换为其他文件的源文件 - 那么您需要弄清楚它为什么被复制。如果由于某种原因它只是TabSale.xib的一个伪造副本,那么您应该摆脱它。

+0

好吧,我不知道.xib,那是很好的信息,但是我更关心的是,没有足够清楚的说明,为什么我可以要求一些xib通过指定'xml'使用'pathForResource'和其他xibs我不能。其他xibs我必须指定'nib'才能找回它们的路径。我可以发现这种行为没有明显的原因。 –

+0

当你指定“xml”时,你是**不**获取NIB。您正在获取一些其他文件,但名称相似但不完全相同。你的截图显示了这一点毫无疑问,扩展名是.xml。不明原因的是为什么在你的应用中有这样一个.xml文件。正如我在答复的最后一段中提到的那样,这是项目/目标的问题。很可能,您无意中将.xml文件添加到项目以及目标的“复制包资源”构建阶段,并且他们正在被尽职地复制。最初创建这些.xml文件的内容我无法猜测。 –