gpt4 book ai didi

objective-c - 解析通知 userInfo 时出现 NSString IntValue 异常

转载 作者:行者123 更新时间:2023-12-03 17:02:31 26 4
gpt4 key购买 nike

我正在实现一个登录系统,该系统使用 NSNotifications userInfo 字典通过通知传递登录信息。字典可以正常传递,但是当我尝试使用 IntValue 将字典中的 NSString 之一转换为 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。我做错了什么?

最佳答案

您认为是 NSString 的对象实际上是 NSArray,如错误消息所示:

-[__NSArrayM length]: unrecognized selector sent to instance 0x600000441d40

我无法提供更多信息,也就是说,如果您在 Objective-C 集合类中传递整数,则使用 NSNumber 对象,而不是 NSString 对象。

关于objective-c - 解析通知 userInfo 时出现 NSString IntValue 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27926286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com