我有一个现有的Parse数据库,有几个PFObject子类。
如果我想将一个新属性添加到子类,例如一个数组,我将它作为@property添加到PFObject子类中,并在实现中将其声明为@dynamic。我将它初始化为新对象的空白。
@dynamic newArray;
+ (instancetype)object
{
MyObject *myObject = [super object];
myObject.newArray = [NSMutableArray array];
return myObject;
}
但是我如何确保已经为现有对象初始化,因为访问旧对象的此属性会导致崩溃。
我想我可以覆盖getter,但是我会失去所有的Parse样板代码,并且不确定这是明智的。目前我必须清空我的数据库以确保所有新对象都具有正确的属性。但这显然不适用于现实世界。
答案 0 :(得分:0)
这是我在开发Parse应用程序时遇到的一个问题,但我没有预先存在的对象实例没有指定键值的问题。
此问题的一个解决方案是设置运行所有预先存在的对象的云代码作业,并为所需字段分配默认值。这将使您能够将客户端的复杂性降至最低,从而可以轻松更新并可能移植到其他系统。
你还应该设置一个beforeSave函数,确保所有字段都有一个默认值,然后拒绝那些没有默认值或默默地为它们分配默认值的字段。
我的第三个也是最后一个建议(你似乎已经在做了)是确保+ object方法正确初始化具有所有默认值的对象,以确保固定对象(如果你使用的是LDS)正确的默认值。