每对的第二个对象必须是非零。或者,您是不是忘记零终止您的参数列表?
Posted
技术标签:
【中文标题】每对的第二个对象必须是非零。或者,您是不是忘记零终止您的参数列表?【英文标题】:second object of each pair must be non-nil. Or, did you forget to nil-terminate your parameter list?'每对的第二个对象必须是非零。或者,您是否忘记零终止您的参数列表? 【发布时间】:2016-05-11 09:00:15 【问题描述】:这是我的代码
NSMutableArray * myArray = [[NSMutableArray alloc]init];
NSMutableDictionary * myData = [[NSMutableDictionary alloc]init];
[myData setValue:@"151" forKey:@"LoginID"];
[myData setValue:@"0" forKey:@"UserID"];
[myData setValue:@"0" forKey:@"SubUserID"];
[myData setValue:@"92" forKey:@"WorkGroupID"];
[myData setValue:@"Doctor" forKey:@"WorksFor"];
[myData setValue:@"0" forKey:@"UserWorkGroup"];
[myArray addObject:myData];
myData = [[NSMutableDictionary alloc]init];
[myData setValue:@"," forKey:@"SortingName"];
[myData setValue:@"1" forKey:@"Searching"];
[myData setValue:@"Desc" forKey:@"SortingOrder"];
[myData setValue:@"10" forKey:@"RecordsCount"];
[myData setValue:@"0" forKey:@"PageIndex"];
[myArray addObject:myData];
NSData *dataToSend = [NSJSONSerialization dataWithJSONObject:myArray options:0 error:nil];
NSString *jsonString = [[NSString alloc] initWithData:dataToSend encoding:NSUTF8StringEncoding];
[getProfileServices sendSynchronousPostRequestWithStringForAction:getProfileURL andParameters:[[NSDictionary alloc]initWithObjectsAndKeys:jsonString ,nil]andRequestType:@"POST"];
当我运行它时,我得到了这个错误
NSInvalidArgumentException
,原因:-[__NSPlaceholderDictionary initWithObjectsAndKeys:]:
每对的第二个对象必须为非零。或者,您是否忘记零终止您的参数列表? *** 首先抛出调用栈:
【问题讨论】:
错误消息告诉你确切地问题是什么:你有initWithObjectsAndKeys:jsonString ,nil
- 错误消息指出每对的第二个对象必须是非零!
我也试过了,但没用
为什么andParameters
需要字典,它是做什么用的?你为什么要传递 json?
你尝试过什么???您只需要修复编译错误。
我尝试删除 nil 但在方法调度中显示缺少哨兵
【参考方案1】:
在NSDictionary
或NSMutableDictionary
中设置字符串值和字符串键。例子:
下面的例子是正确的格式,
[myData setValue:@"1" forKey:@"Searching"];
不要发送 nil 值和 nil 键。
不要在字典中发送 , 内部值
你的错误在下面给出
[myData setValue:@"," forKey:@"SortingName"];
上面的问题是","
改代码如下,
[myData setValue:@"String Value" forKey:@"SortingName"];
或
请更改以下代码,
[getProfileServices sendSynchronousPostRequestWithStringForAction:getProfileURL andParameters:[[NSDictionary alloc] initWithObjectsAndKeys:dataToSend] andRequestType:@"POST"];
希望对你有帮助
【讨论】:
你的回答不是很容易理解——你认为 OP 应该改变什么,什么可以为他解决问题? 只用逗号设置值(这里的“,”是唯一的字符串)你觉得有问题吗?我不这么认为。 是的,是不发送字典值,我上面的代码明显更新了 ***.com/questions/6345637/… 看例子 什么是getProfileServices
?以上是关于每对的第二个对象必须是非零。或者,您是不是忘记零终止您的参数列表?的主要内容,如果未能解决你的问题,请参考以下文章