2014-01-23 92 views
0

從一個Parse查詢中拉出對象後,我有一個IBOutlet集合視圖掛鉤到10個標籤。我的問題是,由於某種原因,它記錄了10個不同的對象ID,但只通過集合視圖顯示了一個對象ID。這裏是我有的代碼:PFQuery *查詢=IBOutlet集合標籤顯示一個

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     // The find succeeded. 
     NSLog(@"Successfully retrieved %d scores.", objects.count); 
     // Do something with the found objects 
     int i = 0; 
     for (PFObject *object in objects) { 
      NSLog(@"%@", object.objectId); 
      for (UILabel *EventLabel in self.EventTitles){ 
       (EventLabel *)self.EventTitles[i]= object.objectId; 
       i++; 
      } 
     } 

有沒有人看到代碼的問題,它只顯示一個而不是10?

回答

0

的錯誤是,你這一個週期

for (PFObject *object in objects) { 
} 

這意味着,第一個被hexecuted每次你從對象的新對象的時間內執行這個週期

for (UILabel *EventLabel in self.EventTitles){ 
    EventLabel.text = object.objectId; 
} 

。每次從對象中獲取對象時,都會使用相同的對象ID覆蓋所有標籤。結果是所有的標籤在最後都會顯示最後分析的對象的對象ID。你應該這樣做以下代替:

int i = 0; 
for (PFObject *object in objects) { 
    if (i >= [self.EventTitles count]) break;//to make sure we only write up to the max number of UILabels available in EventTitles 
    (UILabel *) self.EventTitles[i].text = object.objectId;//I assume the "objectId" property of object is an NSString! 
    i++; 
} 

你應該重新命名「EventTitles」到「eventTitles」 - 這是一個普遍的規則,類名以大寫字母,但實例變量那些沒有。無論如何,如果你不改變它,它會運行,但是在你的代碼中這是一個很好的想法。

+0

我修改了一下代碼,但它給了我一個EventLabel行上的錯誤,表示'expected expression'..這是正確的嗎? – user3205645

+0

您是否嘗試過運行它? – tanzolone

+0

是的,它說'預期的表達'失敗 – user3205645