我正在开发一个用户可以用手指在屏幕上绘图的应用程序。我为此使用 UIBezierPath。我需要保留这个数据,它是一个包含多个 BezierPath 对象的 NSArray。解决此问题的最佳方法是什么?存储在coredata中,使用NSData存储在文件中?非常感谢。
问问题
2766 次
2 回答
12
您是否期望必须存储多个对象?您是否需要能够根据某些过滤器或排序来获取它们?我建议使用 Core Data 来为自己节省大量打包/解包数据的工作量。没有真正的理由将其存储在文件中。
编辑:
正如另一个答案所说,您只需将其存档到 NSData。UIBezierPath类遵循 NSCoding 协议,因此您可以执行以下操作来归档它:
NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath];
您可以将该 NSData 对象持久保存在 Core Data 中。
要解码存档,假设我们有一个bezierData
NSData 对象,您可以执行以下操作:
UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData];
于 2012-07-12T13:59:58.760 回答
1
将 UIBezierPath 归档到 NSData,并将其作为 NSData 类型的属性存储在 CoreData 中。如果您将其设为可转换属性,您可以拥有更简单的 API。
这很容易做到,尤其是对于已经支持归档的类。
有关详细信息,请参阅此文档。
于 2012-07-12T18:06:07.313 回答