我正在使用Swift中的Photos
和CoreML
框架在正在开发的App中实现一些图像分析功能。我需要能够存储类型为VNGenerateImageFeaturePrintRequest()
的{{1}}的结果。
这些结果需要为每个图像保留,以便以后无需重新计算即可使用,因为这是一个缓慢的过程。 VNFeaturePrintObservation
不符合VNFeaturePrintObservation
,因此我不能使用类似Codable
的东西,这就是我以前将这样的数据持久存储到Core Data中的方式。
是否可以将JSONEncoder
对象保留在Core Data中?
答案 0 :(得分:1)
我对VNFeaturePrintObservation
不熟悉,但是the docs say
VNObservation
的子类,并且VNObservation
符合NSSecureCoding
这意味着VNFeaturePrintObservation
也符合NSSecureCoding
。可以使用类型设置为“可转换”的Core Data属性将符合NSSecureCoding
的任何类保存在Core Data中。多亏了NSSecureCoding
,没有其他工作了。
在Core Data模型编辑器中将如下所示:
需要注意的两件事:
VNFeaturePrintObservation
如果让Xcode生成源代码,则该属性将如下所示:
@NSManaged public var observation: VNFeaturePrintObservation?
使用此属性无需做任何特殊的事情。
顺便说一句,Codable
不适用于此处,因为Core Data不使用Codable
。 NSSecureCoding
将自动与Data
进行相互转换,这就是您需要与Core Data一起使用的原因。