“BOOLtypes的集合元素”不是一个Objective-C对象

任何人都有一个线索,为什么我得到这个?

-(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 

你不能把基本的数据types放在字典中。 它必须是一个对象。 但是你可以使用[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不是一个对象,所以*语法大概是没有意图的。

删除BOOL指针('*'):

 exclusive:(BOOL*) isExclusive 

并改变:

 @"exclusive": isExclusive 

至:

 @"exclusive": [NSNumber numberWithBool:isExclusive] 

要么:

 // Literal version of above NSNumber @"exclusive": @(isExclusive) 

注意,NSDictionary不能存储基本types,包括布尔值。 所以你必须把值封装在一个对象中,在这个例子中是NSNumber。