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

Как вставить (BOOL *) в NSMutableDictionary

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

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

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

Как бы вставить BOOL * в словарь?

4b9b3361

Ответ 1

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

NSNumber *boolNumber = [NSNumber numberWithBool:YES];

Чтобы понять это:

BOOL b = [boolNumber boolValue];

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


EDIT: Предполагая, что вы действительно имеете в виду BOOL * (указатель):

NSValue *boolValue = [NSValue value:pointerToBool withObjCType:@encode(BOOL*)];
BOOL *b = [boolValue pointerValue];

Ответ 2

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

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

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