iOS使用JSON向服务器发送BOOL值
我基本上是在尝试这样做iOS使用JSON向服务器发送BOOL值,ios,objective-c,json,boolean,Ios,Objective C,Json,Boolean,我基本上是在尝试这样做 // Catch the true/false flag and convert to BOOL value for server NSString *on = [prefs objectForKey:@"published"]; BOOL flag = TRUE; if ([on isEqualToString:@"true"]) { flag = TRUE; } else { flag = FALSE; } NSArray *objects =
// Catch the true/false flag and convert to BOOL value for server
NSString *on = [prefs objectForKey:@"published"];
BOOL flag = TRUE;
if ([on isEqualToString:@"true"])
{
flag = TRUE;
}
else
{
flag = FALSE;
}
NSArray *objects = [NSArray arrayWithObjects:body, flag, user_token, request_token, deviceID, api_user, nil];
NSArray *keys = [NSArray arrayWithObjects:@"selections", @"published", @"user_token", @"request_token", @"device_id", @"api_user", nil];
NSDictionary *questionDict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
它检查prefs是否为真,如果为真,则转换为带真等的BOOL值
然而,它崩溃了,说它缺少关键点的对象数
有什么帮助吗?您不能将原语添加到
NSArray
-Cocoa集合只能包含对象。将您的标志
包装在NSNumber
中以符合此要求,如下所示:
NSArray *objects = [NSArray arrayWithObjects:body, [NSNumber numberWithBool:flag], user_token, request_token, deviceID, api_user, nil];
您还可以使用数组和值的新语法来缩短代码:
NSArray *objects = @[body, @(flag), user_token, request_token, deviceID, api_user];
它基本上是说数组“objects”中的一个对象为nil,请确保通过nslogging检查此数组,这是有效的!非常感谢,非常适合将来参考:-)NSArray*objects=@[@(标志),user_token,request_token,deviceID,api_user];是上述答案的一个简短版本。@AdamRush:更多阅读:dasblinkenlight不需要“nil”-哨兵。(数组中的最后一个为零)。(使用新语法时)