菜鸟教程小白 发表于 2022-12-12 23:54:06

objective-c - RestKit - 水合外键数组


                                            <p><p>我有以下 JSON:</p>

<pre><code>{
    &#34;users&#34;: [
      {&#34;id&#34;: &#34;1&#34;, &#34;name&#34;: &#34;John Doe&#34;},
      {&#34;id&#34;: &#34;2&#34;, &#34;name&#34;: &#34;Bill Nye&#34;}
    ],
    &#34;groups&#34;: [
      {&#34;id&#34;: &#34;1&#34;, &#34;name&#34;: &#34;Group1&#34;, &#34;users&#34;: [&#34;1&#34;, &#34;2&#34;]},
      {&#34;id&#34;: &#34;2&#34;, &#34;name&#34;: &#34;Group2&#34;, &#34;users&#34;: [&#34;1&#34;]}
    ]
}
</code></pre>

<p>...以及带有用户和组对象的核心数据模型。组对象与用户具有一对多关系 (NSSet)。</p>

<p>我发现以下线程似乎表明这是可能的,但没有解释如何执行这种映射:</p>

<p> <a href="https://github.com/RestKit/RestKit/issues/284" rel="noreferrer noopener nofollow">https://github.com/RestKit/RestKit/issues/284</a> </p>

<p>如何执行此映射以正确连接每个组的“用户”关系?</p>

<p><strong>注意:</strong>我已设置映射,可将 JSON 用户和组正确映射到其各自的核心数据对象。但是,每个组的“用户”NSSet 是空的。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>所以,我使用 RestKit 0.20(pre2) 解决了这个问题。</p>

<p>JSON 需要更改为以下内容(注意组的 users 数组中的属性名称):</p>

<pre><code>{
    &#34;users&#34;: [
      {&#34;id&#34;: &#34;1&#34;, &#34;name&#34;: &#34;John Doe&#34;},
      {&#34;id&#34;: &#34;2&#34;, &#34;name&#34;: &#34;Bill Nye&#34;}
    ],
    &#34;groups&#34;: [
      {&#34;id&#34;: &#34;1&#34;, &#34;name&#34;: &#34;Group1&#34;, &#34;users&#34;: [{&#34;id&#34; : &#34;1&#34;}, {&#34;id&#34; : &#34;2&#34;}]},
      {&#34;id&#34;: &#34;2&#34;, &#34;name&#34;: &#34;Group2&#34;, &#34;users&#34;: [{&#34;id&#34; : &#34;1&#34;}]}
    ]
}
</code></pre>

<p>然后,以下映射:</p>

<pre><code>RKEntityMapping *userMapping = ;
userMapping.identificationAttributes = @[@&#34;id&#34;];
];
RKEntityMapping *groupMapping = ;
groupMapping.identificationAttributes = @[@&#34;id&#34;];
];
;
</code></pre>

<p>最后是下面的 responseDescriptors:</p>

<pre><code>RKResponseDescriptor *userResponseDescriptor = ;
RKResponseDescriptor *groupResponseDescriptor = ;
];
</code></pre>

<p>然后使用 RKObjectManager 的 getObjectsAtPath:parameters:success:failure 方法获取您的对象,您就完成了!</p></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - RestKit - 水合外键数组,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/13726203/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/13726203/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - RestKit - 水合外键数组