【问题标题】:IB Connections in Xcode crashingXcode 中的 IB 连接崩溃
【发布时间】:2012-02-29 17:11:20
【问题描述】:

昨晚我去测试我的 iOS 应用程序时,它在启动时崩溃了。我什至没有研究导致崩溃的笔尖。无论如何,这是错误代码:

2/29/12 10:32:05.291 AM Safe Flight: *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0xdd496f0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key Airport1.'
*** First throw call stack:
(0x2873052 0x33add0a 0x2872f11 0x1ae2032 0x1a53f7b 0x1a53eeb 0x1a6ed60 0x136191a 0x2874e1a 0x27de821 0x136046e 0x1362010 0x114214a 0x1142461 0x11417c0 0x1150743 0x11511f8 0x1144aa9 0x37b7fa9 0x28471c5 0x27ac022 0x27aa90a 0x27a9db4 0x27a9ccb 0x11412a7 0x1142a9b 0x3710 0x2f35)

Airport1 只是一个标签,其中有一个 正确 连接到它的 IBOutlet。此外,如果我删除连接,错误只是与下一个具有连接的项目有关。

另外,我的 FileOwners 类正确设置为适当的 viewController。

//  MasterViewController.h

#import <UIKit/UIKit.h>
#import "MobclixAds.h"

@class DataViewController;
@class EditViewController;
@class SearchViewController;



@interface MasterViewController : UIViewController{

    UILabel *Airport1;
    UILabel *Airport2;
    UILabel *Airport3;
    UILabel *Airport4;
    UILabel *Airport5;
    UILabel *Airport6;
    UILabel *Airport7;
    UILabel *Airport8;
    UILabel *Airport9;
    UIButton *Airport1B;
    UIButton *Airport2B;
    UIButton *Airport3B;
    UIButton *Airport4B;
    UIButton *Airport5B;
    UIButton *Airport6B;
    UIButton *Airport7B;
    UIButton *Airport8B;
    UIButton *Airport9B;

    MobclixAdView* adView;
}

@property (strong, nonatomic) DataViewController *dataViewController;
@property (strong, nonatomic) EditViewController *editViewController;
@property (strong, nonatomic) SearchViewController *searchViewController;


@property (nonatomic, retain) IBOutlet UILabel *Airport1;
@property (nonatomic, retain) IBOutlet UILabel *Airport2;
@property (nonatomic, retain) IBOutlet UILabel *Airport3;
@property (nonatomic, retain) IBOutlet UILabel *Airport4;
@property (nonatomic, retain) IBOutlet UILabel *Airport5;
@property (nonatomic, retain) IBOutlet UILabel *Airport6;
@property (nonatomic, retain) IBOutlet UILabel *Airport7;
@property (nonatomic, retain) IBOutlet UILabel *Airport8;
@property (nonatomic, retain) IBOutlet UILabel *Airport9;
@property (nonatomic, retain) IBOutlet UIButton *Airport1B;
@property (nonatomic, retain) IBOutlet UIButton *Airport2B;
@property (nonatomic, retain) IBOutlet UIButton *Airport3B;
@property (nonatomic, retain) IBOutlet UIButton *Airport4B;
@property (nonatomic, retain) IBOutlet UIButton *Airport5B;
@property (nonatomic, retain) IBOutlet UIButton *Airport6B;
@property (nonatomic, retain) IBOutlet UIButton *Airport7B;
@property (nonatomic, retain) IBOutlet UIButton *Airport8B;
@property (nonatomic, retain) IBOutlet UIButton *Airport9B;

@property(nonatomic,retain) IBOutlet MobclixAdView* adView;


@end

// MasterViewController.m


#import "MasterViewController.h"

#import "DataViewController.h"
#import "EditViewController.h"
#import "SearchViewController.h"



@implementation MasterViewController

@synthesize dataViewController = _dataViewController;
@synthesize editViewController = _editViewController;
@synthesize searchViewController = _searchViewController;



@synthesize Airport1, Airport2, Airport3, Airport4, Airport5, Airport6, Airport7, Airport8, Airport9;
@synthesize Airport1B, Airport2B, Airport3B, Airport4B, Airport5B, Airport6B, Airport7B, Airport8B, Airport9B;
@synthesize adView;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = @"Safe Flight";
        self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
    }
    return self;
}

我的代码有问题吗?还是 Xcode 本身?我已经重新启动了 Xcode 和模拟器,甚至做了一个“干净”的构建(听起来会有所帮助......)

谢谢, 安德鲁

编辑这是我的 AppDelegate,我正在为窗口设置正确的 xib

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [Mobclix start];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;

}

问题解决了!!!

由于一些愚蠢的垃圾邮件过滤器,我无法回答我自己的问题...我可以发布问题的图片...但它已修复!

但这里是问题的链接click here

【问题讨论】:

  • 查找您的视图控制器所在的 xib。以与 FileOwner 相同的方式更改类。
  • 我不明白你想说什么,你能澄清一下吗?
  • 你看到产生错误的对象不是ViewController而是UIApplication吗?您可以在调用 This 的位置发布代码吗?我想让你做的和给出的答案一样。我建议你做的,不是在 FileOwner 上,而是在 View Controller 本身中找到 Identity Inspector 类。您是在任何 xib 中声明它还是直接在代码上创建它?
  • 您的视图控制器是否在任何主 xib 文件中声明,即上面有 UIWindow 的文件?如果是,您还必须更改它的类名。
  • navigationController 是 ivar 吗?它有 xib 的出口吗?

标签: ios xcode ibaction iboutlet


【解决方案1】:

发现问题!!我现在觉得有点傻;)但无论如何,这是问题的截图!

【讨论】:

    【解决方案2】:

    导致崩溃的原因可能是 xib 到 header 的连接错误。 Airport1 可以连接到除 MasterViewController 之外的另一个类。

    如果您的标签连接到 File's Owner - 它应该是 MasterViewController

    如果您在 xib 中创建了另一个 UIViewController 并将 Airport1 标签连接到它,那么这个控制器也应该连接到 MasterViewController (Identity Inspector "Class ”字段。)

    已更新。添加截图:

    【讨论】:

    • 这很奇怪,我之前也遇到过这个问题,所以我检查了这个问题,并将类设置为我的 viewController。一定是别的东西
    • 抱歉,我猜不出你的问题。这只是最常见的错误。如果您再次检查您的 xib 连接器 - 我敢肯定 - 您会找到原因。
    • 我的班级设置正确:/ 我希望它是那么简单Screenshot
    • 太棒了。然后检查所有者属性中是否没有黄色三角形(鼠标右键)。如果您的标签连接正确。如果是 - 我没有其他想法,抱歉。
    【解决方案3】:

    当您初始化 MasterViewController(无论您从哪里启动它)时,请确保您使用适当的 nib 文件对其进行初始化

    例如。

    MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"YourNibName" bundle:nil];
    

    【讨论】:

    • 您的 xib 设置如何?它是否只有一个“UIView”对象,其中设置了“文件所有者”视图出口。或者您是否将 UIViewController 添加到 xib。?如果后者确保该文件具有适当的类(MasterViewController)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多