2015-04-28 45 views
0

我有一个现有的Parse数据库和几个PFObject子类。为现有的PFObject子类添加并初始化新属性

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

@dynamic newArray; 

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

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

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

回答

0

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

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

您还应该设置一个beforeSave函数,以确保所有字段都具有默认值,然后拒绝那些没有或默认为其分配默认值的字段。

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

+0

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