我使用以下代码检查NSNumber是否具有nil值。所以我将NSNumber转换为字符串,并检查其长度是否为0.如果它为零,则返回NSNull,否则我将返回该数字。
- (id)NSNullToNilForKey:(NSNumber *)number
{
if ([[number stringValue] length] == 0){
return [NSNull null];
}
return number;
}
我按如下方式调用它,
NSString *bodyString = [NSString stringWithFormat:@"[ \"%@\",{\"session_token\": \"%@\",\"request\": [\"GetAssigneeWiseCompliancesChart\",{\"country_id\": %@,\"business_group_id\": %@,\"legal_entity_id\": %@,\"division_id\": %@,\"unit_id\": %@,\"user_id\": %@}]}]",clientSessionId,clientSessionId,[self NSNullToNilForKey:countryId],[self NSNullToNilForKey:businessGroupId],[self NSNullToNilForKey:legalEntityId],[self NSNullToNilForKey:divId],[self NSNullToNilForKey:unitId], [self NSNullToNilForKey:userId]];
但问题是,尽管if循环正在被调用。从NSNullToNilForKey的if循环返回的值是<null>
而不是null
。我该如何解决这个问题?
答案 0 :(得分:2)
您正在从格式创建字符串,所有参数都是通过其描述添加的,您所看到的是NSNull
实例的描述。
您的方法应该专门返回一个字符串,您应该明确选择要返回的字符串。
- (id)NSNullToNilForKey:(NSNumber *)number
{
if ([[number stringValue] length] == 0){
return @"NSNull";
}
return number;
}
答案 1 :(得分:1)
试试这个
将任意对象id
更改为NSNumber *
- (NSNumber *)NSNullToNilForKey:(NSNumber *)number
{
if ([[number stringValue] length] == 0){
return [NSNull null];
}
return number;
}