MrRevolutionzz
MrRevolutionzz

Reputation: 29

iOS this class is not key value coding-compliant for the key label

So I'm new to iOS programming and I've run into a problem.

I created a new view controller, and clicked the checkmark to auto make a .xib file for it. In the xib file I put a label, that I want to fade in. So I tried linking it to my custom view controller, and keep crashing with 'this class is not key value coding-compliant for the key login1'. Login1 being the name of the UILabel I imported. Here's the header file for RootView:

@interface RootViewController : UIViewController {
    PlayerStatViewController *playerStatViewController;
    NSString *viewName;
}
@property (weak, nonatomic) IBOutlet UILabel *login1;
@property (nonatomic, retain) PlayerStatViewController *playerStatViewController;
@property (nonatomic, retain) NSString *viewName;

-(IBAction)switchPage:(id)sender:(NSString *)toSwitch;
-(void) animateButton;
@end

And the .m file: #import "RootViewController.h" #import "FileUtils.h"

@interface RootViewController ()

@end

@implementation RootViewController

@synthesize playerStatViewController;
@synthesize viewName;
@synthesize login1;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    self.viewName = @"Boot";
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString* fpath = [NSString stringWithFormat:@"%@%@", getDefPath(), @"/config.txt"];
    self.login1.text = loadfile(@"serverName", fpath);
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

-(IBAction)switchPage:(id)sender :(NSString *)toSwitch {
    if([toSwitch isEqualToString:(@"PlayerStat")]) {
        if(self.playerStatViewController == nil) {
        PlayerStatViewController *playerStatView = [[PlayerStatViewController alloc]
                                                    initWithNibName:(@"PlayerStat") bundle:[NSBundle mainBundle]];
            self.playerStatViewController = playerStatView;
        }
    [self.navigationController pushViewController:self.playerStatViewController animated:YES];
    }else if([toSwitch isEqualToString:(@"Boot")]) {
        [self.navigationController pushViewController:self animated:YES];
    }
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self performSelector:@selector(animateButton) withObject:nil afterDelay:0.1f];
}

- (void)animateButton {
    self.login1.alpha = 0;

    [UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
                     animations:^{ self.login1.alpha = 1;}
                      completion:nil];
}

@end

How I load the Xib (if it matters):

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        RootViewController *viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
        [self.window setRootViewController:viewController];
        [window makeKeyAndVisible];
        return YES;
    }

Project being built for iPhone only. In the Xib, yes the custom view controller is set as the file owner. There is no mispointing values (exclamation points in inspection manager).

edit: crash log:

    2014-08-06 06:02:12.887 TrinityApi[5761:60b] *** Terminating app due to uncaught exception     'NSUnknownKeyException', reason: '[<UIApplication 0x8c781d0> setValue:forUndefinedKey:]: this     class is not key value coding-compliant for the key login1.'
*** First throw call stack:
(
    0   CoreFoundation                      0x017ee1e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x0156d8e5 objc_exception_throw + 44
    2   CoreFoundation                      0x0187dfe1 -[NSException raise] + 17
    3   Foundation                          0x0122dd9e -[NSObject(NSKeyValueCoding) setValue:forUndefinedKey:] + 282
    4   Foundation                          0x0119a1d7 _NSSetUsingKeyValueSetter + 88
    5   Foundation                          0x01199731 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 267
    6   Foundation                          0x011fbb0a -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] + 412
    7   UIKit                               0x004e41f4 -[UIRuntimeOutletConnection connect] + 106
    8   libobjc.A.dylib                     0x0157f7de -[NSObject performSelector:] + 62
    9   CoreFoundation                      0x017e976a -[NSArray makeObjectsPerformSelector:] + 314
    10  UIKit                               0x004e2d4d -[UINib instantiateWithOwner:options:] + 1417
    11  UIKit                               0x004e4ada -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 165
    12  UIKit                               0x0022d61b -[UIApplication _loadMainNibFileNamed:bundle:] + 58
    13  UIKit                               0x0022d949 -[UIApplication _loadMainInterfaceFile] + 245
    14  UIKit                               0x0022c54e -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 543
    15  UIKit                               0x00240f92 -[UIApplication handleEvent:withNewEvent:] + 3517
    16  UIKit                               0x00241555 -[UIApplication sendEvent:] + 85
    17  UIKit                               0x0022e250 _UIApplicationHandleEvent + 683
    18  GraphicsServices                    0x037e3f02 _PurpleEventCallback + 776
    19  GraphicsServices                    0x037e3a0d PurpleEventCallback + 46
    20  CoreFoundation                      0x01769ca5 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53
    21  CoreFoundation                      0x017699db __CFRunLoopDoSource1 + 523
    22  CoreFoundation                      0x0179468c __CFRunLoopRun + 2156
    23  CoreFoundation                      0x017939d3 CFRunLoopRunSpecific + 467
    24  CoreFoundation                      0x017937eb CFRunLoopRunInMode + 123
    25  UIKit                               0x0022bd9c -[UIApplication _run] + 840
    26  UIKit                               0x0022df9b UIApplicationMain + 1225
    27  TrinityApi                          0x00002a9d main + 141
    28  libdyld.dylib                       0x01e35701 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

EDIT: Just randomly started to work

Upvotes: 2

Views: 1823

Answers (1)

Geet
Geet

Reputation: 2437

"class is not key value coding-compliant " means You had assigned an outlet to our label at first and had connected it in our xib, but then you have deleted the outlet and the xib is still containing a reference to the outlet which is no longer present, You need to remove this reference from your xib.

Goto your XIB file and right click on Files Owner, you may find a label with a yellow mark on it, just remove the outlet to which its connected to, clean and run your program once again

Upvotes: 1

Related Questions