2014-08-22 3 views
1

Мне нужна помощь с помощью метода numberOfRowsInSection:. На самом деле, я ищу более динамичный способ задать количество строк. Поскольку в моем приложении можно создать sections (столько, сколько вы хотите, они хранятся как NSMutableArray от NSUserDafults). Я думаю, что что-то подобное было бы слишком жестко закодировано и, следовательно, совершенно неверно, так как я не знаю, сколько разделов пользователь будет Создайте.iOS - Застрял на numberOfRowsInSection: с несколькими разделами

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if (section == 0) { 
     return ... 
    } 
    if (section == n) { 
     return ... 
    }   
} 

Тогда, я изо всех сил, как я могу отобразить NSManagedObject в этих разделах. Я имею в виду, когда пользователь создает это NSManagedObject, он устанавливает свой раздел. Я хотел бы, чтобы NSManagedObject будет отображаться справа section.

P.S.NSManagedObjects хранятся в NSMutableArray.

ответ

2

Вы можете отфильтровать свой NSMutableArray, в котором вы храните свой NSManagedObjects с помощью NSPredicate, чтобы вернуть все объекты, которые находятся в определенном разделе. Я не знаю, тип вас section property но позволяет предположить, что это NSInteger, так что мы можем легко использовать раздел параметров из

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

то внутри этого метода вы можете фильтровать myArray и считать это объекты:

[[self.myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"section == %d",section]] count]; 
1

Самый простой способ сделать это - поместить управляемые объекты для каждого раздела в отдельные массивы, а затем создать массив из этих массивов.

Так что, если вы разделить их следующим образом:

NSArray *sections - @[@[obj1, obj2, obj3], 
         @[obj4, obj5, obj6], 
         ...]; 

Вы могли бы реализовать numberOfRowsInSection следующим образом:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [sections[section] count]; 
} 
Смежные вопросы