Я внедряю систему входа в систему, которая использует словарь NSNotifications
userInfo
для передачи информации для входа по уведомлению. Словарь передается в порядке, но когда я пытаюсь преобразовать один из NSStrings
в словарь в int, используя IntValue, я получаю ошибку. Даже когда я копирую объект словаря в другую строку, я получаю ту же ошибку, но с нормальной строкой ошибок нет. Код:Исключение NSString IntValue при разборе уведомления userInfo
- (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? Посмотрите этот вопрос, может быть, помогите: http://stackoverflow.com/questions/7896646/how-to-pass-object-with-nsnotificationcenter NSArray не имеет объектаForKey! – weso