从NSUserDefaults获取数据时崩溃

时间:2011-07-21 09:12:11

标签: objective-c selector nsuserdefaults

从NSUSerDefaults和Passing获取数据使参数应用程序崩溃

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
   [loginController showView:[prefs objectForKey:kSavedUserName] :[prefs objectForKey:kSavedUserPassword]];
//              [loginController showView:@"abcd03@gmail.com" Password:@"apple”];

当我在NSLog [prefs objectForKey:kSavedUserPassword]中打印这些值时显示值。密码和[prefs objectForKey:kSavedUserName]用户名。

如果我硬编码我的需求参数,它工作正常。

我的崩溃日志是

unrecognized selector sent to instance 0x5ccc2d0
2011-07-21 14:32:27.721 iShop[3815:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[LoginViewController showView::]: unrecognized selector sent to instance 0x5ccc2d0'
*** Call stack at first throw:

2 个答案:

答案 0 :(得分:1)

您的loginController未响应showView::消息,这就是您的应用崩溃的原因。检查LoginViewController中的方法名称,然后进行更正。我认为NSUserDefaults无关紧要 同时尝试避免选择器中的未命名参数,始终命名它们,以避免出现问题。

答案 1 :(得分:1)

您注释掉的代码是正确的,因为它有第二个参数的名称。

[loginController showView:@"abcd03@gmail.com" Password:@"apple”];

你的NSUserDefaults示例在选择器中省略了'Password'。尝试将其更改为

[loginController showView:[prefs objectForKey:kSavedUserName] Password:[prefs objectForKey:kSavedUserPassword]];

在更具风格的观点上,我建议将方法名称更改为更像下面的内容。

showViewForUserName:(NSString*)user_name password:(NSString*)password;