2015-10-15 2 views
0

У меня есть массив, как этотКак преобразовать массив значений в булевы значения

myArray=[0,0,1]; 

Я хочу, чтобы преобразовать эти значения массива в логических значений, как показано ниже

myArray=[false,false,true]; 

поручаю массив значений в строки

mystring=[myarray objectAtIndex:0]; 

, если возможно, здесь также я могу преобразовать 0, 1s в логические значения.

+0

'myArray = [false, false, true];' Это не массив значений в Obj-C. Объекты должны ограничиваться типом 'id' – Nishant

+0

myArray = [0,0,1]; также недействителен, должен быть myArray = [@ 0, @ 0, @ 1]; –

+0

[myArray [0] booleanValue]; должен давать вам логические значения (ДА/НЕТ) –

ответ

1

Вы можете сохранить способ хранения значения. Независимо от числа, которое вы храните больше одного, оно будет считаться YES, когда вы получите BOOL. Тем не менее, он даст вам фактический номер, если вы его получите как NSInteger или int. Таким образом, использовать booleanValue метод для получения так:

NSNumber *value1 = myArray[0]; 
BOOL boolValue1 = [value1 booleanValue]; 
0

Короткий ответ в коде ниже:

// Do nothing 

Длинный ответ таков:

Вы не массив как вы описали. Правильный код:

[email protected][ @0, @0, @1]; // NSArray instance of NSNumber instances. 

Вы не хотите иметь массив, как вы описали. Правильный код будет:

[email protected][ @NO, @NO, @YES]; // NSArray instance of NSNumber instances. 

Поскольку оба NSNumber экземпляров, содержащие целые значения или булевых значения are the same, [@0 boolValue] вернет NO[@1 boolValue] и вернут YES. Итак, у вас уже есть то, что вы хотите получить.

Ваша настоящая проблема - это перевод значений (integer или boolean, в то время как логические значения - целых значений) в строку. Вы можете использовать форматирование чисел для этого или просто условное выражение:

BOOL b = [myarray[0] boolValue]; 
mystring = [email protected]"true":@"false"; 
Смежные вопросы