Как вставить (BOOL *) в NSMutableDictionary
Я пытаюсь сохранить значение булевой базы данных на карте следующим образом:
[recentTags setValue:[NSNumber numberWithBool:[aMessage isSet]] forKey:[aMessage tagName]];
Это приводит к ошибке: "Несовместимый указатель на целое преобразование, отправляющее BOOL *, ака подписанный char * в 'BOOL', ака подписанный char"
Как бы вставить BOOL * в словарь?
Ответы
Ответ 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).