2014-11-13 21 views
2

解析文檔明確指出,您不應該爲PFObject的子類重寫init。這沒關係對於在代碼中創建,因爲你可以覆蓋對象的方法,這樣的對象...如何在讀取時初始化PFObject子類?

@implementaion CustomObject : PFObject <Subclassing> 

+ (instancetype) object { 
    CustomObject *me = [super object]; 

    // init some instance variables or whatever 

    return me; 
} 

@end 

這工作時,這種情況: CustomObject * myThing = [CustomObject對象];

但對象似乎並沒有從查詢中獲取對象時被調用....

PFQuery *query = [CustomObject query]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     for(int i = 0; i < objects.count; i++){ 
      CustomObject *myThing = objects[i]; 
      // object method was never called... 
     } 
    } 
}]; 

所以...我怎麼能初始化一個自定義PFObject時,它的牽強?

+0

首先,什麼實例變量,你只有iOS版客戶端上實例化有意義嗎?其次,如果在從數組中檢索對象後,只需調用'[myThing對象]'?有點多餘,但它會工作,對吧? – mbm29414

+0

它不是[myThing對象],它是[CustomClass對象] ...它創建並分配一個新的自定義PFObject子類。 – pizzafilms

+0

啊,我的不好。我錯過了這是一種類方法。那麼,是否有可能將初始化代碼移動到它自己的方法,從'[MyObject object]調用它,還能夠在從'PFQuery'返回的對象上調用它? – mbm29414

回答

1

也許你還沒有註冊你的子類。

[Parse setApplicationId:@"your id" 
        clientKey:@"your key"]; 

只需撥打[CustomObject register]或添加到子類

+ (void) load{ 
    [self register]; 
}