菜鸟教程小白 发表于 2022-12-12 11:48:53

ios - MagicalRecord 创建不会保存新的数据对象。


                                            <p><p>我有这个代码:</p>

<pre><code>HLMReferenceData *referenceDataObj = ;
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
    HLMReferenceData *localReferenceData = ;
    // Setup localReferenceData here ....
}
                  completion:NULL];
</code></pre>

<p>据我所知,这与网上有关如何使用 MagicalRecord 创建新记录的示例完全一致。但是它不起作用。我在日志中得到了这个:</p>

<pre><code>... +(0x3abdc4) Error Message: The operation couldn’t be completed. (Cocoa error 133000.)
... +(0x3abdc4) Error Domain: NSCocoaErrorDomain
... +(0x3abdc4) Recovery Suggestion: (null)
... -(0x954b680) NO CHANGES IN ** UNNAMED ** CONTEXT - NOT SAVING
</code></pre>

<p>我在 Magical Record 的代码库中进行了挖掘,当调用 <code>inContext:</code> 方法时会发生错误。它返回一个 nil 对象作为结果。我在网上搜索过,但无法弄清楚出了什么问题。 <code>HLMReferenceData</code> 类映射到数据模型中的单个表,没有到其他表的链接。类中的所有字段都会被填充。</p>

<p>我很茫然。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>inContext:</code> 返回 nil,因为您的对象是在外部上下文中创建/插入的,并且从未保存过。因此它还不能在 <code>localContext</code> 中访问。 (更具体地说,inContext: 将尝试使用临时 objectID 查找对象,但它不会找到。)您应该在保存 block 中创建/插入对象,如下所示:</p>

<pre><code>[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){
    HLMReferenceData *referenceDataObj = ;
    referenceDataObj.name = @&#34;foo&#34;;
    // Continue setting up referenceDataObj here ....
} completion: NULL];
</code></pre>

<p>您可以在 Magical Record 的 github 文档的“保存”下看到一个非常相似的示例。请参阅“MagicalRecord 2.3.0 中保存的更改”小节</p>

<p> <a href="https://github.com/magicalpanda/MagicalRecord/blob/develop/Docs/Saving.md" rel="noreferrer noopener nofollow">https://github.com/magicalpanda/MagicalRecord/blob/develop/Docs/Saving.md</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - MagicalRecord 创建不会保存新的数据对象。,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25738625/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25738625/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - MagicalRecord 创建不会保存新的数据对象。