我正在开发一个应用程序,用户可以使用手指在屏幕上绘图。我正在使用UIBezierPath来实现。我需要保存这个数据,它是一个包含多个BezierPath对象的NSArray。怎样最好地处理这个问题?存储在coredata中,使用NSData存储为文件?非常感谢。
我正在开发一个应用程序,用户可以使用手指在屏幕上绘图。我正在使用UIBezierPath来实现。我需要保存这个数据,它是一个包含多个BezierPath对象的NSArray。怎样最好地处理这个问题?存储在coredata中,使用NSData存储为文件?非常感谢。
你是否希望存储多个对象?是否需要能够根据某些过滤器或排序方式获取它们?我建议使用Core Data来节省在打包/解包数据方面的很大一部分工作。没有真正的理由将它存储在文件中。
编辑:
如其他答案所述,您只需将其归档为NSData即可。 UIBezierPath类遵循NSCoding协议,因此您可以像这样对其进行归档:
NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath];
您可以将该NSData对象持久化到Core Data中。
要解码存档,假设我们有一个名为bezierData
的NSData对象,您可以执行以下操作:
UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData];
将UIBezierPath存档为NSData,并将其作为CoreData中类型为NSData的属性存储。如果将其设置为可转换属性,则可以拥有更简单的API。
对于已支持存档的类,这很容易实现。
请参阅此文档以获取更多信息。