2016-01-07 3 views
0

У меня есть данные о моей базе данных Parse, и я пытаюсь получить эти данные и показать их в UILabel под UICollectionViewCell.Проблема UICollectionViewController с парсером

-(void)viewDidLoad { 
[super viewDidLoad]; 
PFQuery *retrieveClass = [PFQuery queryWithClassName:@"ClassName"]; 
    [retrieveClass findObjectsInBackgroundWithBlock:^(NSArray *objets, NSError *error) { 

     if (!error) { 
      classArray = [[NSArray alloc] initWithArray:objets]; 
      NSLog(@"%@", objets); 
     } 
    }]; 
} 

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { 

    return 1; 
} 


- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 

    return classArray.count; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 

    PFObject *tempDict = [classArray objectAtIndex:indexPath.row]; 

    cell.label.text = [tempDict objectForKey:@"Name"]; 
    NSLog(@"%@",[tempDict objectForKey:@"Name"]); 

    return cell; 
} 

classArray является NSArray и я создал файл UICollectionViewCell и создал UILabel затем импортируется в мой основной файл.

Я добавил идентификатор ячейки, сделал соединения, и я не знаю, что не так.

Названия классов правильные, имена полей правильные, идентификаторы синтаксического анализа и ClientKeys являются правильными.

Я получаю обратную связь журнала под блоком запроса, но ничего под UICollectionViewCell.

Выход Вход enter image description here

+0

Вызов табличного метода перезагрузки в block.This запросов будет вызывать методы делегата снова наполненного массива. – bunty

+0

@bunty Я не думаю, что проблема связана с блоком запроса, потому что я возвращаюсь из NSLog. Я ничего не получаю, когда устанавливаю UILabel под UICollectionViewCell –

+0

@bunty. Но я попробовал ваше предложение, и он только разбился. –

ответ

0

Попробуйте с данными мастика

[retrieveClass findObjectsInBackgroundWithBlock:^(NSArray *objets, NSError *error) { 

    if (!error) { 
     classArray = [[NSArray alloc] initWithArray:objets]; 
     NSLog(@"%@", objets); 
     [self.collectionView reloadData]; 
    } 
}]; 

Тем не менее, вы получите обновленные значения, а затем вызвать его с dispatch_async блоком.

dispatch_async(dispatch_get_main_queue(), ^{ 

    [self.collectionView reloadData]; 
}); 

значение Метка будет cell.label.text = [tempDict objectForKey:@"Name"];

Будем надеяться, что это поможет.
Благодаря

+0

Он только падает. И я не думаю, что это было связано с обновлением, потому что оно находится под ViewDidLoad, и я получаю данные через NSLog, но я не получаю никакой обратной связи с журналом в UICollectionViewCell –

1

Изменить эту строку

cell.label.text = [classArray objectAtIndex:indexPath.row]; 

с

cell.label.text = [tempDict objectForKey:@"Name"]; 
+0

О, оооо, я на самом деле экспериментировал с чем-то и забыл изменить его на это. И я попробовал и не работал, к сожалению. Имя класса правильное, и имена полей также правы –

+0

Теперь вызов метода reload должен работать. Есть ли еще авария после вызова перезагрузки. Попробуйте распечатать количество объектов в блоке, чтобы убедиться, что есть хотя бы один объект, возвращаемый из Parse. – bunty

+0

Да, я сделал эти изменения и назвал его перезагрузкой, все еще не работал для меня. И чтобы убедиться, что мы на правильной странице, вы вызываете перезагрузку, как [self.collectionView reloadData]; правильно? –

Смежные вопросы