将 VNFeaturePrintObservation 持久化到核心数据
Persisting VNFeaturePrintObservation to Core Data
我正在使用 Swift 中的 Photos
和 CoreML
框架在我正在开发的应用程序中实现一些图像分析功能。我需要能够存储 VNGenerateImageFeaturePrintRequest()
的结果,其类型为 VNFeaturePrintObservation
.
需要为每个图像保留这些结果,以便以后可以使用它们而无需重新计算,因为这是一个缓慢的过程。 VNFeaturePrintObservation
不符合 Codable
,所以我不能使用像 JSONEncoder
这样的东西,这就是我以前将这样的数据持久化到 Core Data 中的方式。
有什么方法可以将我的 VNFeaturePrintObservation
对象保存在 Core Data 中?
我不熟悉 VNFeaturePrintObservation
,但是 the docs say
- 它是
VNObservation
的子class,并且
VNObservation
符合NSSecureCoding
也就是说VNFeaturePrintObservation
也符合NSSecureCoding
。任何符合 NSSecureCoding
的 class 都可以通过使用类型设置为“Transformable”的 Core Data 属性保存在 Core Data 中。感谢 NSSecureCoding
没有额外的工作。
在 Core Data 模型编辑器中看起来像这样:
需要注意两点:
- 类型为“可变形”
- 自定义 class 是
VNFeaturePrintObservation
如果您 Xcode 生成源代码,属性 将如下所示:
@NSManaged public var observation: VNFeaturePrintObservation?
您无需执行任何特殊操作即可使用此 属性。
顺便说一下,Codable
在这里不适用,因为 Core Data 不使用 Codable
。 NSSecureCoding
会自动转换 to/from Data
,这就是你需要与 Core Data 一起使用的东西。
我正在使用 Swift 中的 Photos
和 CoreML
框架在我正在开发的应用程序中实现一些图像分析功能。我需要能够存储 VNGenerateImageFeaturePrintRequest()
的结果,其类型为 VNFeaturePrintObservation
.
需要为每个图像保留这些结果,以便以后可以使用它们而无需重新计算,因为这是一个缓慢的过程。 VNFeaturePrintObservation
不符合 Codable
,所以我不能使用像 JSONEncoder
这样的东西,这就是我以前将这样的数据持久化到 Core Data 中的方式。
有什么方法可以将我的 VNFeaturePrintObservation
对象保存在 Core Data 中?
我不熟悉 VNFeaturePrintObservation
,但是 the docs say
- 它是
VNObservation
的子class,并且 VNObservation
符合NSSecureCoding
也就是说VNFeaturePrintObservation
也符合NSSecureCoding
。任何符合 NSSecureCoding
的 class 都可以通过使用类型设置为“Transformable”的 Core Data 属性保存在 Core Data 中。感谢 NSSecureCoding
没有额外的工作。
在 Core Data 模型编辑器中看起来像这样:
需要注意两点:
- 类型为“可变形”
- 自定义 class 是
VNFeaturePrintObservation
如果您 Xcode 生成源代码,属性 将如下所示:
@NSManaged public var observation: VNFeaturePrintObservation?
您无需执行任何特殊操作即可使用此 属性。
顺便说一下,Codable
在这里不适用,因为 Core Data 不使用 Codable
。 NSSecureCoding
会自动转换 to/from Data
,这就是你需要与 Core Data 一起使用的东西。