我正在开发一个应用程序,用户可以用手指在屏幕上绘图。我正在使用UIBezierPath。我需要保留这个数据,这是一个包含多个BezierPath对象的NSArray。最好的方法是什么?存储在coredata中,使用NSData存储在文件中?很有责任。
答案 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。
这很容易做到,特别是对于已经支持存档的类。
有关详细信息,请参阅此文档。