未找到 NSBundle mainBundle

Posted

技术标签:

【中文标题】未找到 NSBundle mainBundle【英文标题】:NSBundle mainBundle not found 【发布时间】:2011-12-18 11:49:10 【问题描述】:

我在 iPad 上使用拆分视图模板。

在我的MasterViewController 代码中:

NSBundle * bundle = [NSBundle mainBundle];

有效。

在我的DetailViewController 中,相同的代码显示错误?我导入了<UIKit/UIKit.h>。它知道NSBundle,但无论出于何种原因都无法识别mainBundle

如果是这样就好了。可以帮到我!

Missing "[" at start of message send expression

编辑

回答:

我忘了括号。它在一个案例陈述中。所以使用:

case 1:

   //bla ...

【问题讨论】:

为什么要在头文件中使用这段代码?你能把代码粘贴到发生这个错误的地方吗? 不,它在.m 文件中使用。对困惑感到抱歉。我编辑了我的答案。我想为MPMediaPlayerController 初始化一个NSURL 您看到的确切错误文本是什么? 复制和粘贴文本比使用图像更容易。 【参考方案1】:

如果声明变量的case语句需要在语句周围使用大括号,这只是简单的“C”语法。

固定:

switch (sender.row) 
    case 1:
    
        NSURL *movieURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"testclip" ofType:@"mov"]];
        MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    

我将 MoviePlayerController 更改为 MPMoviePlayerController 假设这就是操作的意思。我还添加了缺少的 player 变量。

【讨论】:

是的。我自己发现的。 :)【参考方案2】:

如果要声明新变量,则需要在 case 中添加花括号。

这段代码不会编译

case 1:
     NSURL *foo;

这将:

case 1:

    NSURL *foo;

【讨论】:

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

使用未声明的标识符“NSBundle”

Retina 图形未从 NSBundle 加载

[NSBundle allBundles] 中未出现单独的 CoreData 模型

硬件测试中未找到 Xib

使用 [NSBundle loadNibNamed:owner:] 加载 NIB,但窗口未出现在前台

在部分模拟的对象上调用 + [NSBundle bundleForClass:] 返回的结果与未模拟的对象不同?