我们正在寻找一种记录核心数据实体的方法。到目前为止,我提出的唯一真正的选择是:
选项1 感觉太多额外的工作,而且几乎肯定会在99%的时间内过时。
选项2 比选项1更自然,更正确。这里最大的问题是,如果使用Xcode重新生成此模型类,那些注释可能会丢失。
选项3 感觉不如选项2更正确,但具有增加元数据提取自动化可能性的附加优势。例如,在我们的某个应用程序中,我们需要密切关注我们在设备上本地存储的内容以及同步到iCloud。使用用户信息字典,可以很容易地自动创建某种形式的人工制品,可以在内部和外部(由客户)检查是否合规
所以我的问题是,为此目的使用用户信息字典是否不合适?我还缺少其他选择吗?
答案 0 :(得分:6)
选项2是我每次都使用的。如果您查看核心数据模型(something.xcdatamodeld或something.xcdatamodel),您将看到如下图所示的内容。
您可以将您的实体绑定到您想要的任何类,然后将注释放在那里。如果你保持你的实体名称和你的班级名称相同,这将有助于明确你所做的事情。
此外,您还可以添加自动化功能。您可以通过创建自定义getter和setter(访问器方法)和自定义description
方法来完成此操作。
答案 1 :(得分:2)
我使用选项2和类别。我将让XCode生成NSManagedObject子类,并在每个子类上使用类别。对于类别,我不会丢失我在类别中所做的更改,可以记录,制作自定义的getter和setter,我仍然可以使用生成的子类。
答案 2 :(得分:1)
如果我们只谈论你的课程的记录(即或多或少地写出大量可供人阅读的文本),我会使用选项2.
如果您担心Xcode在选项2中覆盖类的可能性,您可以考虑为每个实体创建两个类:一个由Xcode生成并且始终可以替换(您通常不会触摸此文件)另一个继承自生成的一个,并在其中放置所有自定义和注释。
这种两类方法由mogenerator提出。
虽然如果您需要使用将以编程方式处理的实体存储一些元数据,userInfo非常适合这种情况。