2015-01-03 60 views
0

我在PFUser中有一個指針鍵,我試圖檢索它指向的對象。我見過很多例子有關查詢,但不應該有任何需要,由於解析有取方法,它是PFUser類的指針,所以我用這個:parse.com從當前用戶獲取指針數據

PFObject *menu = [[[PFUser currentUser] objectForKey:@"menuID"] fetchIfNeeded]; 

我知道我的當前用戶有一個對象指向該鍵,但我得到一個空菜單對象始終

回答

0

Wain在說你需要獲取當前用戶時是正確的。但是,您必須記住,如果您想使用fetchInBackground,我們正在使用多個線程。要保留單個線程,只需使用[[PFUser currentUser]提取],但請記住,當互聯網連接不良時,這可能會導致用戶掛起或阻塞。以下是如何更有效地使用此功能的示例。 (與fetch和fetchInBackground相同的菜單問題)我們也必須獲取菜單,因爲它是一個指針,所以currentUser將只獲取指針而不是整個對象。

[[PFUser currentUser] fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) { 
    if(!error){ 
     PFObject *menu = object[@"menuID"]; 
     [menu fetch]; 
     // Execute any code that needs the menu here, or store it in your viewController (or other class variable) if you need to save it for later 

     // Alternately, you could use this: 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [menu fetchInBackgroundWithBlock:^(PFObject *fetchedMenu, NSError *menuError) { 
       if(!menuError){ 
        // Execute any code that needs the menu here, or store it 
       } else { 
        NSLog(@"%@", menuError); 
       } 
      }]; 
     }); 
    } else { 
     NSLog(@"%@", error); 
    } 
}]; 
+0

非常感謝你們,非常有幫助的解釋和例子 – adambargh

0

默認情況下currentUser沒有任何自定義添加的數據填充列。您需要獲取用戶下載該數據,然後您可以在本地使用它。

另外您的油我們雲代碼和保存網絡請求。

+0

我只是做[[pfuser currentuser] fetch]? – adambargh

+0

IIRC,是(需要檢查文檔) – Wain

+0

所以現在我做了PFUser * user =(PFUser *)[[PFUser currentUser] fetchInBackGround]; ,然後對其進行測試我檢查: 如果([用戶objectForKey:@ 「菜單ID」]!= NULL){// } 但我得到這個錯誤 - [BFTask objectForKey:]:無法識別的選擇發送到實例 – adambargh