菜鸟教程小白 发表于 2022-12-12 18:20:01

ios - JSOG API 对象的 RestKit 映射


                                            <p><p>我试图弄清楚如何使用 <a href="https://github.com/RestKit/RestKit" rel="noreferrer noopener nofollow">RestKit</a> 将 <code>API</code> 响应映射到 CoreData 对象。 . <code>API</code> 使用 <a href="https://www.npmjs.com/package/jsog#serializing-to-jsog" rel="noreferrer noopener nofollow">JSOG</a>标准。这是一个例子:</p>

<pre><code>[
    {
      &#34;@id&#34;: &#34;1&#34;,
      &#34;name&#34;: &#34;Sally&#34;,
      &#34;friend&#34;: {
            &#34;@id&#34;: &#34;2&#34;,
            &#34;name&#34;: &#34;Bob&#34;,
            &#34;friend&#34;: {
                &#34;@id&#34;: &#34;3&#34;,
                &#34;name&#34;: &#34;Fred&#34;,
                &#34;friend&#34;: { &#34;@ref&#34;: &#34;1&#34; }
            }
      }
    },
    { &#34;@ref&#34;: &#34;2&#34; },
    { &#34;@ref&#34;: &#34;3&#34; }
]
</code></pre>

<p>如何为这样的 <code>JSON</code> 创建 <code>RKEntityMapping</code>?简单属性的映射是微不足道的,问题是如何在此处设置关系以便它们与 <code>@ref</code> 一起工作,而且当顶级用户对象仅包含 <code>@ref</code> 时.</p>

<pre><code>RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:@&#34;Question&#34;
                                                   inManagedObjectStore:.managedObjectStore];

[userMapping addAttributeMappingsFromDictionary:@
{
   @&#34;@id&#34; : @&#34;identifier&#34;,
   @&#34;name&#34; : @&#34;name&#34;
}];

[userMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@&#34;friend&#34;
                                                                            toKeyPath:@&#34;friend&#34;
                                                                        withMapping:userMapping]];
</code></pre>

<p>我的猜测是我可以使用下面的代码来处理对象内部的 <code>@ref</code>:</p>

<pre><code>;
</code></pre>

<p>但它是正确的吗?</p>

<ol>
<li>如何将完整对象或仅对已提供对象的引用(通过 <code>@ref</code>)映射到实际的 Core Data 对象?</li>
<li>如何将 JSON 的顶级元素(作为 <code>User</code> 对象列表)映射到 <code>User</code> 实体的实际列表?</li>
</ol></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用映射本身添加关系,因此它会递归钻取。对 ref 使用外键映射。</p>

<hr/>

<p>在您发表评论后再次查看此内容,它实际上可能是动态映射而不是外键的良好候选者。这意味着创建一个新的映射,它只使用 <code>@"@ref": @"identifier"</code> 进行连接和一个动态映射,它查看键并决定是使用这个连接映射还是完整的<code>userMapping</code>.</p>

<p>请注意,这两个映射都需要指定 <code>identifier</code> 是对象的唯一键,您应该使用内存缓存来允许找到现有对象,而不是创建重复项。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - JSOG API 对象的 RestKit 映射,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34912268/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34912268/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - JSOG API 对象的 RestKit 映射