Objective-C: конвертировать идентификатор в NSInteger
У меня есть словарь с NSNumber в нем, и я хотел бы преобразовать его в NSInteger. Простейший/самый короткий способ сделать это - ввести тип в NSNumber, а затем вызвать integerValue? Например:
// newQuestion is an NSDictionary defined somewhere
NSInteger questionId = [(NSNumber *)[newQuestion objectForKey:@"question_id"] integerValue];
Есть ли лучший способ сделать это? Спасибо!
Ответы
Ответ 1
Вы можете избавиться от актерского состава, если хотите сделать его короче:
// newQuestion is an NSDictionary defined somewhere
NSInteger questionId = [[newQuestion objectForKey:@"question_id"] integerValue];
Так как objectForKey:
возвращает id
, вы можете отправить ему любое известное сообщение, и компилятор не будет жаловаться.
Ответ 2
Неа. Это путь. Вопрос, однако, заключается в том, почему вам нужно в первую очередь превратиться в целое? Этого можно избежать. Или нет.
Ответ 3
Да, вам не нужно бросать.
NSInteger questionId = [[newQuestion objectForKey:@"question_id"] integerValue];
В этом конкретном случае актер фактически ничего не делает. Если элемент в вашем словаре не является NSNumber
(например, it nil
), то questionId
будет 0.