2015-04-28 79 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