Словарь Objective C, вставляющий BOOL

Хорошо, я немного смущен. Это - вероятно, просто мелочь.

У меня есть функция, которая выглядит примерно так:

- (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 в словарь?

63
задан Peter Mortensen 22 January 2010 в 19:01
поделиться

4 ответа

Значения в Nsdictionary должны быть объекты. Чтобы решить эту проблему, оберните логию в Nsnumber объекты:

[parameters setValue:[NSNumber numberWithBool:news] forKey:@"news"];
[parameters setValue:[NSNumber numberWithBool:mails] forKey:@"mails"];
124
ответ дан 24 November 2019 в 16:10
поделиться

Контейнеры Objective-C могут хранить только объекты Objective-C, поэтому вам нужно обернуть вас в каком-то объекте. Вы можете создать объект NSNumber с [NSNUMBER NUMBERWITHBOOL] и сохранить результат.
Позже вы можете получить ваше логическое значение обратно, используя Nsnumber's -BoolValue .

14
ответ дан 24 November 2019 в 16:10
поделиться

Bool не является объектом - это синоним int и имеет 0 или 1 в качестве его значений. В результате он не будет введен в объектсодержащую структуру.

Вы можете использовать NSNumber для создания оболочки объекта для любых целочисленных типов; Там есть конструктор [NSNUMBER NUMBERWITHBOOL:] , который вы можете вызывать, чтобы получить объект, а затем использовать это. Точно так же вы можете использовать это, чтобы снова получить объект: [OBJ Bovolvalue] .

8
ответ дан 24 November 2019 в 16:10
поделиться

Вы можете вставить @ «Да» или @ «Нет» @ «NO» Строковые объекты и какао будут бросать его в Bool, как только вы прочитаете их обратно.

В противном случае я бы предложил создать словарь с использованием фабричного метода, такого как разрабатывание DictionaryWithObjectsandkeys: .

6
ответ дан 24 November 2019 в 16:10
поделиться