Предупреждение, когда я заполняю массив с помощью BOOL - PullRequest
4 голосов
/ 26 апреля 2011

У меня есть этот код:

BOOL booleanValue = TRUE;
[arrayZone replaceObjectAtIndex:indexZone withObject:booleanValue];

Этот код дает мне предупреждение, которое говорит:

incompatible integer to pointer conversion: 
sending BOOL to parameter of type 'id'

Почему?

Ответы [ 4 ]

14 голосов
/ 26 апреля 2011

Вам необходимо пометить BOOL на NSNUmber следующим образом:

BOOL booleanValue = TRUE;
[arrayZone replaceObjectAtIndex:indexZone withObject:[NSNumber numberWithBool:booleanValue]];

Затем, чтобы получить значение BOOL, вы распаковываете его, используя boolValue:

BOOL b = [[arrayZone objectAtIndex:index] boolValue];
0 голосов
/ 22 октября 2014

BOOL является примитивным типом, и вашему массиву требуется объект. Вот почему вам нужно обернуть это в NSNumber. Но с более новым xcode вы можете просто набрать @YES или @NO, и xcode будет обрабатывать его как число с кодом. Итак, вместо:

    BOOL booleanValue = TRUE;
    [arrayZone replaceObjectAtIndex:indexZone withObject:[NSNumber numberWithBool:booleanValue]];

теперь вы можете использовать

    [arrayZone replaceObjectAtIndex:indexZone withObject:@YES];
0 голосов
/ 26 апреля 2011

Этот вопрос кажется дубликатом Objective C Boolean Array

По сути, BOOL - это примитивный тип - вы должны обернуть его в Object, чтобы избавиться от предупреждения.

0 голосов
/ 26 апреля 2011

Вы можете хранить объекты только в пределах NSArray, а не в базовых типах.

Приветствия

...