【问题标题】:NSBundle mainBundle not found未找到 NSBundle mainBundle
【发布时间】: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
  • 您看到的确切错误文本是什么?
  • 复制和粘贴文本比使用图像更容易。

标签: ios xcode nsbundle mainbundle


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多