任何人都知道我为什么会这样做?
-(void)postPrimaryEMWithEM:(EM *)em
exclusive:(BOOL) isExclusive
success:(void (^)())onSuccess
failure:(void (^)())onFailure {
if(self.accessToken) {
GenericObject *genObject = [[GenericObject alloc] init];
[[RKObjectManager sharedManager] postObject:genObject
path:@"users/update.json"
parameters:@{
...
@"em_id" : ObjectOrNull(em.emID),
@"exclusive": isExclusive <-- error message
答案 0 :(得分:11)
您不能在字典中放置基本数据类型。它必须是一个对象。但您可以使用[NSNumber numberWithBool:isExclusive]
或使用@(isExclusive)
语法:
[[RKObjectManager sharedManager] postObject:genObject
path:@"users/update.json"
parameters:@{
...
@"em_id" : ObjectOrNull(em.emID),
@"exclusive": @(isExclusive), ...
我也不怀疑你打算用BOOL *
作为参数。你可能想要:
- (void)postPrimaryEMWithEM:(EM *)em
exclusive:(BOOL) isExclusive
success:(void (^)())onSuccess
failure:(void (^)())onFailure {
...
}
同样,BOOL
不是对象,因此*
语法可能不是预期的。
答案 1 :(得分:7)
从BOOL中删除指针('*'):
exclusive:(BOOL*) isExclusive
并改变:
@"exclusive": isExclusive
为:
@"exclusive": [NSNumber numberWithBool:isExclusive]
或:
// Literal version of above NSNumber
@"exclusive": @(isExclusive)
注意,NSDictionary无法存储原始类型,包括布尔值。因此,您必须将值封装在对象中,在本例中为NSNumber。