【问题标题】:Storing UIBezierPath as Blob to SQLite in SWIFT (IOS)在 SWIFT (IOS) 中将 UIBezierPath 作为 Blob 存储到 SQLite
【发布时间】:2015-11-10 13:57:15
【问题描述】:

我不知道从哪里开始,所以我只是要求给我一个提示:-)

我喜欢将 UIBezierPath 之类的对象存储并读回 SQLite 数据库的 blob 字段中。 我已经使用 Android Pathes 完成了这项工作,因此必须为此编写自己的序列化器/反序列化器。

是否已经有任何标准方法可以做到这一点?

【问题讨论】:

  • 谁否决了这个问题?这种事情对于新开发者来说是很难解决的,也是一个需要解决的常见问题。 (归档不同种类的对象。)

标签: ios object serialization blob


【解决方案1】:

如果您查看UIBezierPath 的文档,它会说该类符合NSCoding 协议。这意味着您可以使用NSKeyedArchiver 方法 archivedDataWithRootObject 将贝塞尔路径转换为 ​​NSData。将NSData 保存到 BLoB 很容易。

然后您将使用NSKeyedUnarchiver 方法unarchiveObjectWithData 将数据转换回贝塞尔曲线。

如果您的贝塞尔曲线又大又复杂,您可能希望找到另一种存储方式。大型 BLoB 往往会降低 SQL/Core Data 数据库的速度,除非您对自己的设计非常小心。

【讨论】:

  • 非常感谢。你带我走上正确的道路。这正是我所寻找的。现在了解了这个通用的 NSData,它是一种标准流,是吗?
  • NSData 是一个保存二进制数据的对象。您可以将 NSData 的内容发送到流中,或者将流内容捕获到 NSData 中,但它们是不同的。
  • 太棒了。感谢您的解释。
猜你喜欢
  • 2019-04-29
  • 1970-01-01
  • 2011-03-17
  • 2016-04-22
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 2014-04-07
相关资源
最近更新 更多