Objective c 为现有PFObject子类添加和初始化新属性

Objective c 为现有PFObject子类添加和初始化新属性,objective-c,dynamic,properties,parse-platform,pfobject,Objective C,Dynamic,Properties,Parse Platform,Pfobject,我有一个现有的Parse数据库,有几个PFObject子类 如果我想向子类(例如数组)添加一个新属性,我将其作为@property添加到PFObject子类中,并在实现中声明为@dynamic。对于新对象,我将其初始化为空 @dynamic newArray; + (instancetype)object { MyObject *myObject = [super object]; myObject.newArray = [NSMutableArray array];

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

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

@dynamic newArray; 

+ (instancetype)object
{
    MyObject *myObject = [super object];
    myObject.newArray = [NSMutableArray array];
    return myObject; 
}
但如何确保已对现有对象初始化此属性,因为为旧对象访问此属性会导致崩溃


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

这也是我在开发解析应用程序时遇到的一个问题,但我没有对象的现有实例没有指定键的值的问题

这个问题的一个解决方案是设置一个云代码作业,该作业运行在所有预先存在的对象中,并为所需字段指定默认值。这将使您能够将客户机的复杂性保持在最低限度,从而允许轻松更新并可能移植到其他系统

您还应该设置beforeSave函数,确保所有字段都有默认值,然后拒绝没有默认值的字段,或者静默地为其指定默认值


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

看起来云代码就是解决方案,谢谢。beforeSave作为一个快速解决方案也很有用。干杯