Хорошо, я немного смущен. Это - вероятно, просто мелочь.
У меня есть функция, которая выглядит примерно так:
- (void)getNumbersForNews:(BOOL)news andMails:(BOOL)mails {
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setValue:news forKey:@"getNews"];
[parameters setValue:mails forKey:@"getMails"];...}
Не имеет значения, использую ли я setValue:forKey:
или setObject:ForKey:
, Я всегда получаю предупреждение:
"Передающий аргумент 1 из набора... делает указатель из целого числа без броска"...
Как же я вставляю bool в словарь?
Значения в Nsdictionary
должны быть объекты. Чтобы решить эту проблему, оберните логию в Nsnumber
объекты:
[parameters setValue:[NSNumber numberWithBool:news] forKey:@"news"];
[parameters setValue:[NSNumber numberWithBool:mails] forKey:@"mails"];
Контейнеры Objective-C могут хранить только объекты Objective-C, поэтому вам нужно обернуть вас в каком-то объекте. Вы можете создать объект NSNumber с [NSNUMBER NUMBERWITHBOOL]
и сохранить результат.
Позже вы можете получить ваше логическое значение обратно, используя Nsnumber's -BoolValue
.
Bool не является объектом - это синоним int и имеет 0 или 1 в качестве его значений. В результате он не будет введен в объектсодержащую структуру.
Вы можете использовать NSNumber для создания оболочки объекта для любых целочисленных типов; Там есть конструктор [NSNUMBER NUMBERWITHBOOL:]
, который вы можете вызывать, чтобы получить объект, а затем использовать это. Точно так же вы можете использовать это, чтобы снова получить объект: [OBJ Bovolvalue]
.
Вы можете вставить @ «Да»
или @ «Нет»
@ «NO»
Строковые объекты и какао будут бросать его в Bool, как только вы прочитаете их обратно.
В противном случае я бы предложил создать словарь с использованием фабричного метода, такого как разрабатывание
DictionaryWithObjectsandkeys:
.