как вставить (BOOL *) в NSMutableDictionary - PullRequest
13 голосов
/ 11 ноября 2011

Я пытаюсь сохранить логическое значение базы данных на карте следующим образом -

[recentTags setValue:[NSNumber numberWithBool:[aMessage isSet]] forKey:[aMessage tagName]];

Это дает мне сообщение об ошибке "Несовместимый указатель на целочисленное преобразование, отправляющее BOOL * он же подписанный символ * в 'BOOL' или он подписанный символ"

Как мне вставить BOOL * в словарь?

Ответы [ 2 ]

41 голосов
/ 11 ноября 2011

Оберните BOOL в NSNumber :

NSNumber *boolNumber = [NSNumber numberWithBool:YES];

Чтобы получить это:

BOOL b = [boolNumber boolValue];

Вы можете обернуть другие необъектные типы (такие как указатель или структура) в NSValue .

<ч />

РЕДАКТИРОВАТЬ: Если вы действительно имеете в виду BOOL * (указатель):

NSValue *boolValue = [NSValue value:pointerToBool withObjCType:@encode(BOOL*)];
BOOL *b = [boolValue pointerValue];
0 голосов
/ 11 ноября 2011

Ваш isSet метод должен иметь следующую подпись: - (BOOL)isSet;

Предполагая, что это так, не должно быть никаких проблем с использованием NSNumber, как упомянуто titaniumdecoy.

Ваше последнее предложение меня интригует, BOOL *. Конечно, вы имеете в виду BOOL, если вам абсолютно нужна логическая ссылка, то я бы посоветовал вам сохранить начальный / фактический BOOL в NSNumber и хранить ссылки на этот объект везде, где он вам нужен (т.е. ваш NSMutableDictionary).

...