2014-01-17 2 views
0

У меня есть UITableView, заполненный данными из основных данных, и в настоящее время я настроил его так, чтобы он менял размер таблицы на основе количества объектов в сущности. Моя проблема в том, что я знаю, что у меня есть два атрибута. Теперь в tableview есть куча дополнительных ячеек, потому что он создает одно для всего в сущности, а не только для каждого объекта в определенном атрибуте. Поэтому я хотел бы установить numberOfRowsInSection: в зависимости от количества объектов в атрибуте, а не всего объекта. Как мне это сделать?numberOfRowsInSection: для определенного атрибута

Как я сейчас делаю это:

id sectionInfo = 
[[_fetchedResultsController sections] objectAtIndex:section]; 
return [sectionInfo numberOfObjects]; 

EDIT:

Это то, что я пробовал:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
// id sectionInfo = 
// [[_fetchedResultsController sections] objectAtIndex:section]; 
// return [sectionInfo numberOfObjects]; 

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSManagedObjectContext *context = [self managedObjectContext]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"FeedEntity" inManagedObjectContext:context]; 
    [fetchRequest setEntity:entity]; 
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"imageData != nill"]; 
    NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; 

    id sectionInfo = 
    [[theFetchedResultsController sections] objectAtIndex:section]; 
    return [sectionInfo numberOfObjects]; 

} 

Но это приводит к ошибке:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An instance of NSFetchedResultsController requires a fetch request with sort descriptors' 
+0

Вы можете уточнить, что вы подразумеваете под «сущностью» и «атрибутом»? – nhgrif

+0

Итак, у меня есть «feedentity», и в этом объекте у меня есть два атрибута, такие как «картинка» и «строка» в основных данных @nhgrif – matthew

+0

@matthew Можете ли вы создать более простую аналогию. Я не понимаю ваш вопрос. Пожалуйста, объясните, какова ваша текущая проблема, какой результат вы получаете и что вы хотите, чтобы результат был вместо этого. – Pavan

ответ

0

, поэтому у вас есть один e с двумя атрибутами. И вам нужно отфильтровать объекты для показа таблицы. Я думаю, вам нужно использовать NSFetchRequest и NSPredicate для фильтрации ваших объектов, проверяя атрибут вашего объекта.

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSManagedObjectContext *context = [your context]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"FeedEntity" inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"imageData = nil"]; 
request.sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"text" ascending:NO]]; 
NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; 
+0

Как бы я это сделал? – matthew

+0

Я только что обновил свой ответ. –

+0

Я просто немного смущен тем, что помещать в текстовую часть 'fetchRequest.predicate = [NSPredicate predicateWithFormat: @" image = nil "];' – matthew

0

Хорошо, это то, что легко решить. Будет ли всегда изображение для каждой отдельной строки? Почему бы просто не вернуть yourStringDataArray.length в методе -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section? Таким образом вы получите только количество ячеек, необходимое для отображения вашего общего количества строк в вашем массиве.

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