在iPhone中存储文本、字体和颜色的最佳方式?

在iPhone中存储文本、字体和颜色的最佳方式?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我正在开发一个文本编辑器iPhone应用程序,用户可以使用自定义字体、大小和颜色键入和保存便笺。所以我有一个NSString、UIFont和一个UIColor。我需要将所有这些存储在某种数据结构中,但我不确定什么是最好的方法。目前,我正在使用一个NSMutableArray,它将字符串写入plist,另外两个NSMutableArray是自定义对象,它们在退出时保存为NSUserDefaults。但这变得太复杂,无法管理和调试。有更好的方法吗?你的方法已经是最直接的了。如果你正在寻找更干净的东西

我正在开发一个文本编辑器iPhone应用程序,用户可以使用自定义字体、大小和颜色键入和保存便笺。所以我有一个NSString、UIFont和一个UIColor。我需要将所有这些存储在某种数据结构中,但我不确定什么是最好的方法。目前,我正在使用一个NSMutableArray,它将字符串写入plist,另外两个NSMutableArray是自定义对象,它们在退出时保存为NSUserDefaults。但这变得太复杂,无法管理和调试。有更好的方法吗?

你的方法已经是最直接的了。如果你正在寻找更干净的东西,你可以考虑建立一个负责自定义的小对象:

存储所需的数据,以及 根据需要在NSUserDefaults中保存/加载
为所需数据在对象上定义一个简单的getter/setter API,并使用它来分离处理数组和用户默认值的复杂性。您将在不同的类中使用大部分与现有实现相同的实现。

我将创建一个名为AttributeText的自定义NSObject子类。它将使用自定义设置器存储这些值,也可以使用自定义getter从数据存储中检索这些值。如果使用此自定义对象,您可以轻松地将其保存为NSUserDefaults。

我只需存储一个属性字符串。

这就是我保存这些项目的方式:您说您使用数组存储字体和颜色-当然,对于字体,您可以只保存名称和颜色的十六进制代码?我想这取决于你当前如何加载它们并允许选择。NSDictionary在这里有用吗?它完全取决于你正在尝试做什么。如果这是您当前的实现,那么使用带有键文本、字体、颜色的NSDictionary可能比使用三元素NSMutableArray更容易。NSAttributedString声称符合iOS上的NSCoding,但它通常不起作用,因为它的几乎所有属性都是非桥接核心文本类型。