UIBezierPath持久化与核心数据

时间:2012-07-12 13:30:30

标签: ios core-data uibezierpath

我正在开发一个应用程序,用户可以用手指在屏幕上绘图。我正在使用UIBezierPath。我需要保留这个数据,这是一个包含多个BezierPath对象的NSArray。最好的方法是什么?存储在coredata中,使用NSData存储在文件中?很有责任。

2 个答案:

答案 0 :(得分:12)

您是否希望存储多个对象?您是否需要能够根据某些过滤器或订购来获取它们?我建议使用Core Data在打包/解包数据方面节省大量工作。没有理由将其存储在文件中。

修改

正如另一个答案所说,你只需将其存档到NSData。 UIBezierPath类符合NSCoding协议,因此您可以执行以下操作来存档它:

NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath];

您可以将该NSData对象保留在Core Data中。

要解码存档,假设我们有一个bezierData NSData对象,您可以执行以下操作:

UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData];

答案 1 :(得分:1)

将UIBezierPath存档到NSData,并将其作为NSData类型的属性存储在CoreData中。如果您将其设为可转换属性,则可以使用更简单的API。

这很容易做到,特别是对于已经支持存档的类。

有关详细信息,请参阅此文档。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html