【问题标题】:Persisting VNFeaturePrintObservation to Core Data将 VNFeaturePrintObservation 持久化到核心数据
【发布时间】:2020-12-09 15:46:35
【问题描述】:

我正在使用 Swift 中的 PhotosCoreML 框架在我正在开发的应用程序中实现一些图像分析功能。我需要能够存储VNGenerateImageFeaturePrintRequest() 的结果,其类型为VNFeaturePrintObservation

这些结果需要为每个图像保留,以便以后可以使用它们而无需重新计算,因为这是一个缓慢的过程。 VNFeaturePrintObservation 不符合 Codable,所以我不能使用像 JSONEncoder 这样的东西,这就是我之前将这样的数据保存到 Core Data 中的方式。

有没有办法可以将我的 VNFeaturePrintObservation 对象保存在 Core Data 中?

【问题讨论】:

    标签: ios swift core-data coreml


    【解决方案1】:

    我不熟悉VNFeaturePrintObservation,但the docs say那个

    • 它是VNObservation 的子类,并且
    • VNObservation 符合 NSSecureCoding

    这意味着VNFeaturePrintObservation 也符合NSSecureCoding。任何符合NSSecureCoding 的类都可以通过使用类型设置为“Transformable”的Core Data 属性保存在Core Data 中。感谢NSSecureCoding,无需额外工作。

    在 Core Data 模型编辑器中看起来像这样:

    有两点需要注意:

    • 类型为“可变形”
    • 自定义类是VNFeaturePrintObservation

    如果您让 Xcode 生成源代码,该属性将如下所示:

    @NSManaged public var observation: VNFeaturePrintObservation?
    

    您无需执行任何特殊操作即可使用此属性。

    顺便说一下,Codable 在这里不适用,因为 Core Data 不使用 CodableNSSecureCoding 将自动转换为/从Data 转换,这是您需要与 Core Data 一起使用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多