Подтвердить что ты не робот

Objective-C: конвертировать идентификатор в NSInteger

У меня есть словарь с NSNumber в нем, и я хотел бы преобразовать его в NSInteger. Простейший/самый короткий способ сделать это - ввести тип в NSNumber, а затем вызвать integerValue? Например:

// newQuestion is an NSDictionary defined somewhere
NSInteger questionId = [(NSNumber *)[newQuestion objectForKey:@"question_id"] integerValue];

Есть ли лучший способ сделать это? Спасибо!

4b9b3361

Ответ 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.