Inf*_*ite 63 dictionary boolean objective-c
好的,我有点困惑.这可能只是一个微不足道的事情.
我有一个看起来像这样的函数:
- (void)getNumbersForNews:(BOOL)news andMails:(BOOL)mails {
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setValue:news forKey:@"getNews"];
[parameters setValue:mails forKey:@"getMails"];...}
Run Code Online (Sandbox Code Playgroud)
无论我是否使用setValue:forKey:或setObject:ForKey:,我总是收到警告:
"传递set的参数1 ......从没有强制转换的整数中生成指针"......
我怎么在字典中插入一个bool?
Ste*_*son 124
NSDictionary必须是对象中的值.要解决此问题,请将布尔值包装在NSNumber对象中:
[parameters setValue:[NSNumber numberWithBool:news] forKey:@"news"];
[parameters setValue:[NSNumber numberWithBool:mails] forKey:@"mails"];
Run Code Online (Sandbox Code Playgroud)
Vla*_*mir 14
Objective-C容器只能存储Objective-C对象,因此您需要将BOOL包装在某个对象中.您可以使用[NSNumber numberWithBool]并创建结果来创建NSNumber对象.
稍后您可以使用NSNumber获取布尔值-boolValue.
BOOL不是对象 - 它是int的同义词,其值为0或1.因此,它不会被放入包含对象的结构中.
您可以使用NSNumber为任何整数类型创建对象包装器; [NSNumber numberWithBool:]你可以调用一个构造函数来获取一个对象,然后使用它.同样,您可以使用它来再次获取对象:[obj boolValue].
你可以插入@"YES"或@"NO"串起对象,一旦你读回它们,Cocoa就会把它投射到bool.
否则我建议使用工厂方法创建字典dictionaryWithObjectsAndKeys:.