【发布时间】:2015-03-11 15:41:06
【问题描述】:
我正在实现一个登录系统,它使用NSNotifications userInfo 字典通过通知传递登录信息。字典可以通过,但是当我尝试使用 IntValue 将字典中的 NSStrings 之一转换为 int 时,出现错误。即使当我将字典对象复制到另一个字符串时,我也会收到相同的错误,但使用普通字符串时不会出现错误。代码:
- (void)loginComplete:(NSNotification *) notification {
if ([[notification name] isEqualToString:@"Login Complete"]) {
NSDictionary *loginInfo = [notification userInfo];
loginString = [loginInfo objectForKey:@"login_string"];
NSLog(@"%@", loginString);
NSString* expString = [NSString stringWithString:[loginInfo objectForKey:@"expires_in"]];
// [loginInfo objectForKey:@"expires_in"] == @"604700"
expiresIn = [expString intValue];
NSLog(@"expiresIn: %i", expiresIn);
NSString * toInt = @"112345";
int realInt = [toInt intValue];
NSLog(@"realInt: %i", realInt);
}
}
所以第一个NSLog 提供了正确的信息,最后(测试)的转换也可以,但是 expiresIn 导致错误:
2015-01-13 17:53:06.976 API_test_osx[2867:143430] -[__NSArrayM length]: unrecognized selector sent to instance 0x600000441d40
2015-01-13 17:53:06.976 API_test_osx[2867:143430] *** WebKit discarded an uncaught exception in the webView:didFinishLoadForFrame: delegate: <NSInvalidArgumentException> -[__NSArrayM length]: unrecognized selector sent to instance 0x600000441d40
如果我尝试不转换为 int,则该值可以很好地记录为 NSString。我做错了什么?
【问题讨论】:
-
你能展示一下你是如何设置 NSNotification 的 userInfo 的吗?看看这个问题可能有帮助:stackoverflow.com/questions/7896646/… NSArray 没有 objectForKey!
标签: objective-c cocoa nsnotificationcenter