从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:
答案 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;