gpt4 book ai didi

objective-c - 在 Core Data 中保存 MKOverlay 对象

转载 作者:行者123 更新时间:2023-11-29 11:19:21 25 4
gpt4 key购买 nike

我有一个很大的MKOverlay,我想将它保存在Core Data 中,这样我以后就不必创建它了。由于这不是您可以在 Core Data 中选择的类型之一,我该如何保存它呢?

我需要先以某种方式对其进行编码吗?

使用的时候还需要解码吗?

创建新属性时在核心数据中选择什么样的对象?

谢谢你们。

最佳答案

如果您不需要查询不同的叠加层并且您没有在项目的其他地方使用核心数据,那么您最好将叠加层作为编码的 NSArray 缓存在磁盘上。

但是,如果您已经在使用 Core Data 或正在缓存多个叠加层,那么您可以在 NSData 类型的字段中对叠加层进行编码/解码。向实体添加其他字段,以便您可以查询要查找的特定叠加层。

在 iOS 5 中,您可以通过选择“允许外部存储”选项在外部文件中启用 NSData 字段的可选存储。 Core Data 将应用基于大小的启发式方法来确定 blob 或外部文件是否会带来更好的性能。

MKOverlay 符合 NSCoding,因此您可以使用 NSKeyedArchiver 的编码方法对整个 MKOverlay 对象数组进行编码和解码,并将结果存储在实体的二进制字段中。您可能需要 + (NSData *)archivedDataWithRootObject:(id)rootObject on NSKeyedArchiver 和 + (id)unarchiveObjectWithData:(NSData *)data on NSKeyedUnarchiver

有关创建键控存档的详细信息,请参阅存档和序列化编程指南中的存档部分:http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Archiving/Articles/archives.html

您可以为实体的二进制字段编写自定义访问器,为您编码和解码覆盖数组。另一种选择是创建一个封装编码和解码操作的值转换器。最终结果将是一个覆盖数组属性,您可以通过 entity.overlays 设置和读取该属性。

关于objective-c - 在 Core Data 中保存 MKOverlay 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com