我在这里遇到一些严重的问题,试图在Swift中保存AVMetadataMachineReadableCodeObject
。
我正在使用此库:https://github.com/yeahdongcn/RSBarcodes_Swift,但它的文档很糟糕。
基本上,我可以正常扫描并可以处理扫描和将来的扫描以构建扫描历史记录"类型屏幕...当我重新启动应用程序时出现问题 - 我的扫描历史记录为空(显然)。我需要以某种方式在本地保存这些扫描,但我不知道该怎么做。
我尝试保存扫描的属性,但在重新启动应用程序后重建它并不是很棘手。我已经尝试将它们保存为自定义对象(这是理想的并且可能 - 除了AVMetadataMachineReadableCodeObject
部分,因为我收到non-property
之类的错误等等。
我接近我认为我应该尝试像Realm这样的事情,但我以前从未使用它。
答案 0 :(得分:2)
您无法轻松将AVMetadataMachineReadableCodeObject
保存到Core Data,因为它不是受支持的类型,并且不符合NSCoding
。切换到Realm不会有任何区别,因为它具有相同的限制(它不能只保存AVMetadataMachineReadableCodeObject
)。原因是相似的 - 在两种情况下AVMetadataMachineReadableCodeObject
都不是相应类型的子类,并且它不是受支持的属性类型之一。
您需要做什么取决于您的扫描历史记录UI的外观。保存AVMetadataMachineReadableCodeObject
几乎肯定不是最好的方法(你可以通过Swift扩展添加NSCoding
但它可能是错误的答案,即使它有效)。有几种可能性:
stringValue
的{{1}}属性中获取此信息。如果要显示扫描历史记录,请生成新图像进行显示。使用核心图像非常简单 - AVMetadataMachineReadableCodeObject
,COQRCodeGenerator
,CIAztecCodeGenerator
和CICode128BarcodeGenerator
都是内置的。CIPDF417BarcodeGenerator
,以便人们可以看到图像代表的内容。