菜鸟教程小白 发表于 2022-12-12 12:09:52

ios - 使用 RestKit 发布多个对象(作为 JSON 数组)


                                            <p><p>我正在尝试使用 <code>RestKit</code> 将多个对象作为数组发送到服务器。不幸的是,我不能这样做。<br/>
遵循我非常简单的对象以及 RestKit 的映射:</p>

<h3>示例对象</h3>

<pre><code>@interface MyExampleObject : NSObject

@property NSString *key;
@property NSString *value;

@end
</code></pre>

<h3>Array-Object 包含多个 MyExampleObject</h3>

<pre><code>@interface MyArray : NSObject

@property NSArray *array;

@end
</code></pre>

<h3>映射</h3>

<pre><code>RKObjectMapping *mappingObject = ];
[mappingObject addAttributeMappingsFromDictionary:@{
                                              @&#34;key&#34; : @&#34;key&#34;,
                                              @&#34;value&#34; : @&#34;value&#34;
                                              }];

RKObjectMapping *mappingArray = ];
];
</code></pre>

<p>如果我这样做,我会得到以下结果:</p>

<pre><code>{
&#34;dummy&#34; : [
    {
      &#34;key&#34; : &#34;MyKey1&#34;,
      &#34;value&#34; : &#34;MyValue1&#34;
    },
    {
      &#34;key&#34; : &#34;MyKey2&#34;,
      &#34;value&#34; : &#34;MyValue2&#34;
    }
]
}
</code></pre>

<p>但我只想要没有“键”的数组。像这样:</p>

<pre><code>[
    {
      &#34;key&#34; : &#34;MyKey1&#34;,
      &#34;value&#34; : &#34;MyValue1&#34;
    },
    {
      &#34;key&#34; : &#34;MyKey2&#34;,
      &#34;value&#34; : &#34;MyValue2&#34;
    }
]
</code></pre>

<p>将 <code>relationshipMappingFromKeyPath</code> 更改为 <code>nil</code> 对我来说似乎很明显。但这不起作用(得到 <code>setObjectForKey: key cannot be nil</code> 错误)。</p>

<p>如何将多个 <code>MyExampleObjects</code> 作为 JSON 数组发送到我的服务器?</p>

<h2>解决方案:</h2>

<p>作为 <a href="https://stackoverflow.com/users/1988185/wain" rel="noreferrer noopener nofollow">Wain</a>建议我删除了我的“顶部映射”。在最终映射之后:</p>

<pre><code>RKObjectMapping *mappingObject = ];
[mappingObject addAttributeMappingsFromDictionary:@{
                                              @&#34;key&#34; : @&#34;key&#34;,
                                              @&#34;value&#34; : @&#34;value&#34;
                                              }];
</code></pre>

<p>当我将这些东西发布到我的服务器时,我只是做这样的事情:</p>

<pre><code>NSArray *array = ;
[ postObject:array path:@&#34;/myPath/&#34; parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
...
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>只需去掉 <code>MyArray</code> 对象和关联的映射,直接将 <code>MyExampleObject</code> 的 <code>NSArray</code> 传递给 post 方法即可。 RestKit 会理解它是一个对象数组来映射并做正确的事情。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 RestKit 发布多个对象(作为 JSON 数组),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26467385/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26467385/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 RestKit 发布多个对象(作为 JSON 数组)