菜鸟教程小白 发表于 2022-12-12 13:01:49

ios - NSKeyedUnarchiver 不解码来自 CoreData 数据属性的 CLPlacemark 对象


                                            <p><p>我有一个带有地标数据属性的核心数据实体,我试图在其中存储一个 CLPlacemark 对象。 </p>

<pre><code>@interface ZJPlace : NSManagedObject
...   
@property (nonatomic, retain) NSData * placemark;
</code></pre>

<p>我正在像这样对对象进行编码:</p>

<pre><code>place.placemark = ;
</code></pre>

<p>并像这样解码:</p>

<pre><code>self.placemark = ;
</code></pre>

<p>在解码时,我没有收到错误或返回 nil - 它看起来像一个空的 CLPlacemark 对象(<code>self.placemark</code> 的类是 <code>CLPlaceMark</code> 但 <code>description</code> 不会在日志中打印任何内容。)</p>

<p>我可以看到 <code>place.placemark</code> 核心数据属性中保存了数据,但它没有被解码回正确的对象。这与这个问题基本相同:<a href="https://stackoverflow.com/q/3358074/2199136" rel="noreferrer noopener nofollow">Trouble decoding with NSKeyedUnarchiver</a>没有得到答复。 </p>

<p>关于如何一起使用 NSKeyedArchiver 和 CoreData,我是否缺少一些基本的东西?提前感谢您的任何提示...</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>Durrr...当然,<em></em>我已经完全忘记了 Core Data 如何存储复杂对象的基本知识。希望这可以帮助其他一些像我一样一无所知的新手。叹。 </p>

<p>文档:<a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html" rel="noreferrer noopener nofollow">Transformable attributes</a> </p>

<p>所以这是我上面关于在核心数据中编码 CLPlacemark 的问题的非常简单的解决方案:</p>

<ol>
<li>将 Core Data 模型中的属性类型更改为 <code>Transformable</code></li>
<li>在 NSManagedObject 子类的 header 中,记住将 <code>NSManagedObject's</code> 属性的类型从 NSData 更改为您尝试编码的任何类,在我的例子中是 <code>CLPlacemark</code> </li>
</ol>

<p>然后像使用普通对象一样使用属性,例如</p>

<pre><code>self.placemark = place.placemark
</code></pre>

<p>无需使用 <code>NSKeyedArchiver</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - NSKeyedUnarchiver 不解码来自 CoreData 数据属性的 CLPlacemark 对象,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/17903579/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/17903579/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - NSKeyedUnarchiver 不解码来自 CoreData 数据属性的 CLPlacemark 对象