Objective-C: конвертировать идентификатор в NSInteger - PullRequest
28 голосов
/ 25 июня 2011

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

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

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

Ответы [ 3 ]

74 голосов
/ 25 июня 2011

Вы можете избавиться от актерского состава, если хотите сделать его короче:

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

Поскольку objectForKey: возвращает id, вы можете отправить ему любое известное сообщение, и компилятор не будет жаловаться.

4 голосов
/ 25 июня 2011

Да, вам не нужно разыгрывать.

NSInteger questionId = [[newQuestion objectForKey:@"question_id"] integerValue];

В этом конкретном случае актеры ничего не делают. Если элемент в вашем словаре не является NSNumber (например, это nil), тогда questionId будет 0.

3 голосов
/ 25 июня 2011

Неа. Это путь. Вопрос, однако, в том, зачем вам нужно превращаться в целое число? Этого можно избежать. Или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...