Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 允许Restkit为对象发送空值_Ios_Objective C_Restkit - Fatal编程技术网

Ios 允许Restkit为对象发送空值

Ios 允许Restkit为对象发送空值,ios,objective-c,restkit,Ios,Objective C,Restkit,我正试图让RestKit发送一个空值,用于我正在修补到服务器的对象中的字段 我发送了一个对象,并在请求中将分配的\u更改为\u id {"request":{"title":"Asdad", "status":"open", "assigned_to_id": 4}} 请求是一个NSManagedObject,分配给\u的\u id是一个NSNumber 但是,当我想取消分配请求时,我会执行以下操作: request.assigned_to_id = [NSNull NULL]; 但是Res

我正试图让RestKit发送一个空值,用于我正在修补到服务器的对象中的字段

我发送了一个对象,并在请求中将分配的\u更改为\u id

{"request":{"title":"Asdad", "status":"open", "assigned_to_id": 4}}
请求是一个NSManagedObject,分配给\u的\u id是一个NSNumber

但是,当我想取消分配请求时,我会执行以下操作:

request.assigned_to_id = [NSNull NULL];
但是RestKit将请求发送为:

{"request":{"title":"Asdad", "status":"open"}}
它不包括分配给\u的\u id,因为它的值为空。有没有办法防止这种情况?我想让它发送:

{"request":{"title":"Asdad", "status":"open", "assigned_to_id": null }}
==更新===

在做了一些初步研究之后,我发现可以使用SetDefaultValueFormissingAttribute,但这似乎没有帮助,因为它仍然无法正确发送

RKObjectMapping *updateMapping = [RKObjectMapping requestMapping];
updateMapping.setDefaultValueForMissingAttributes = YES;
updateMapping.setNilForMissingRelationships = YES;
[updateMapping addAttributeMappingsFromArray:@[@"title", @"assigned_to_id", @"status"]];

我不认为这是最好的解决方案,但是

分配的_to_id默认值为0,因此如果请求变为未分配,我将发送以下修补程序请求:

然后我使用API逻辑使请求未分配


如果有人知道如何发送参数为NULL的RestKit请求,请告诉我

当然,您可以下载源代码并在那里更改行为,也可以使用单独的NSString属性,我猜RestKit正在使用getter,因此您可以尝试实现自己的getter for NSString属性,该属性将检查NSNumber值并返回空字符串或数字的文本表示形式。您控制服务器吗?因为你真的应该使用删除请求来处理这个…@Wain我确实控制了服务器,但我认为这里不需要删除请求。用户和请求的数据存储在桥接表中,但是,当有人更新请求时,不必发出两个请求—一个更新请求,一个可能删除受让人—发出一个请求更为合理,您只需将受让人设置为NULL,Rails为您处理该逻辑。我将在下面公布我现在决心要做的事情,尽管我认为这不是最好的解决方案。
{"request":{"title":"Asdad", "status":"open", "assigned_to_id": 0 }}