从Parse查询中提取对象后,我有一个连接10个标签的IBOutlet Collection视图。我的问题是,由于某种原因,它记录了10个不同的对象ID,但只通过集合视图显示了一个对象ID。这是我的代码:PFQuery * query =
[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 :(得分:0)
错误是您执行此循环
for (UILabel *EventLabel in self.EventTitles){
EventLabel.text = object.objectId;
}
在另一个周期内
for (PFObject *object in objects) {
}
这意味着每次从对象获取新对象时,第一个都会被执行。每次从对象获取对象时,都会覆盖具有相同objectID的所有标签。结果是,最后所有标签都将显示最后分析的对象的objectID。您应该执行以下操作:
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” - 这是一个常见规则,类名以大写字母开头,但实例变量则不是。如果你不改变它,它将会运行但是你可以很好地考虑你的代码。