8

我正在开发一个用户可以用手指在屏幕上绘图的应用程序。我为此使用 UIBezierPath。我需要保留这个数据,它是一个包含多个 BezierPath 对象的 NSArray。解决此问题的最佳方法是什么?存储在coredata中,使用NSData存储在文件中?非常感谢。

4

2 回答 2

12

您是否期望必须存储多个对象?您是否需要能够根据某些过滤器或排序来获取它们?我建议使用 Core Data 来为自己节省大量打包/解包数据的工作量。没有真正的理由将其存储在文件中。

编辑:

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

NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath];

您可以将该 NSData 对象持久保存在 Core Data 中。

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

UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData];
于 2012-07-12T13:59:58.760 回答
1

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

这很容易做到,尤其是对于已经支持归档的类。

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

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

于 2012-07-12T18:06:07.313 回答