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

IOS Неявное преобразование int в NSNumber запрещено ARC

по следующему коду я получаю errormessage: Неявное преобразование 'int' в 'NSNumber *' запрещено ARC.

Что я делаю неправильно?

<pre>
 <code>
  NSDictionary *results = [jsonstring JSONValue];
  NSNumber *success = [results objectForKey:@"success"]; // possible values for "success": 0 or 1

   if (success == 1) { // ERROR implicit conversion of int to NSNumber disallowed with ARC    
   }
 </code>
</pre>

Спасибо за любую помощь или подсказку!

Даниэль

4b9b3361

Ответ 1

Вы должны использовать [success intValue] == 1. NSNumber - это класс, поэтому число - это указатель, а не прямое значение.

Ответ 2

Erro, потому что вы сравниваете NSNumber с int.

Попробуйте -

if ([success isEqual:[NSNumber numberWithInt:1]])

или

if ([success intValue] == 1)

Ответ 3

NSNumber - это объект (т.е. указатель), поэтому вы не можете просто сравнить его с целым литералом типа 1. Вместо этого вам нужно извлечь значение int из числового объекта:

if ([success intValue] == 1) {
   ...
}

Ответ 4

Если success должно указывать логическое значение, вы можете попробовать это

NSDictionary *results = [jsonstring JSONValue];
NSNumber *success = [results objectForKey:@"success"]; 

if ([success boolValue]) { 
  // success!
}