0

我有一个现有的 Parse 数据库,有几个 PFObject 子类。

如果我想向子类(例如数组)添加新属性,我将其作为@property 添加到 PFObject 子类中,并在实现中声明为@dynamic。对于新对象,我将其初始化为空。

@dynamic newArray; 

+ (instancetype)object
{
    MyObject *myObject = [super object];
    myObject.newArray = [NSMutableArray array];
    return myObject; 
}

但是我怎样才能确保这是为已经存在的对象初始化的,因为访问旧对象的这个属性会导致崩溃。

我想我可以覆盖 getter,但我会丢失所有 Parse 样板代码,并且不确定这是否明智。目前我必须清空我的数据库以确保所有新对象都具有正确的属性。但这显然在现实世界中行不通。

4

1 回答 1

0

这也是我在开发 Parse 应用程序时遇到的问题,但我没有遇到对象的预先存在的实例没有指定键的值的问题。

此问题的一种解决方案是设置一个云代码作业,该作业贯穿所有预先存在的对象并为所需字段分配默认值。这将使您能够将客户端的复杂性降到最低,从而可以轻松更新并可能移植到其他系统。

您还应该设置一个 beforeSave 函数,以确保所有字段都具有默认值,然后要么拒绝没有默认值的字段,要么默默地为它们分配默认值。

我的第三个也是最后一个建议(您似乎已经这样做了)是确保 +object 方法使用所有默认值正确初始化对象,以确保固定对象(如果您使用 LDS)具有正确的默认值价值。

于 2015-04-28T15:15:01.570 回答