2013-11-26 2 views
0

Может ли кто-нибудь предложить лучший способ сделать следующее, пожалуйста?Как заполнить разделы в UITableView

У меня есть UIViewController с 3 кнопками на нем. Для ясности, кнопки: 1. Отели 2. Торговые 3. Закрытый Деятельность

На кнопку мыши, он будет идти в UITableView, который будет иметь список предприятий, связанных с этой кнопкой. Таким образом, нажав на Hotels, вы увидите список отелей.

Но моя проблема заключается в следующем.

Для отелей и магазинов UITableView необходимо будет разделять разделы, например. 3-звездочные отели 4-звездочных отелей. И для покупки в UITableView должно быть не менее 12 различных разделов. Внутри мероприятия не будет секций - только список предприятий.

Чтобы заполнить UITableView, я прочитал список всех предприятий из CSV-файла. В моем .csv-файле я дал каждой группе предприятий идентификатор, например. отели (как 3, так и 4 звезды) - это ID 1, магазины (все 12 разных разделов) - ID 2, а закрытые действия - это ID 3 Вот пример того, как выглядит файл .csv.

ID, Company Name, Address, Tel, Email, Website, Details, Image Name 

Мне удалось прочитать список предприятий в группе, но у меня возникли проблемы с размещением отелей и покупками в секциях. Я пробовал следующее. Напр. В отелях я добавляю 2 массива, а затем проверяю имена каждого отеля. Если название гостиницы является, например, 1A или 2A, я добавляю его к 3-звездному массиву, и если его, например, 1B или 2B Я добавляю его в 4-звездный массив. Но это очень утомительная и не лучшая практика, которую я себе представлял. И это станет еще более утомительным, так как раздел покупок содержит десятки предприятий. Поэтому я не могу проверить каждое название компании отдельно. Вот как я добавляю Business Objects в NSMutableArray _array для определения разделов. Но, как я уже упоминал, со всеми именами компаний, которые нужно проверить, это станет очень утомительным.

- (NSArray *) csvArray2PresidentsArray:(NSArray *)csvArray 
{ 
    int i = 0; 

    for (NSArray *row in csvArray) 
    { 
     // The first row is a header - SKIP 
     if (i > 0) 
     { 
      BusinessDetailContent *_businessDetailContent = [[BusinessDetailContent alloc] init]; 
      _businessDetailContent.no   = [row objectAtIndex:0]; 
      _businessDetailContent.companyName = [row objectAtIndex:1]; 
      _businessDetailContent.address  = [row objectAtIndex:2]; 
      _businessDetailContent.tel   = [row objectAtIndex:3]; 
      _businessDetailContent.email  = [row objectAtIndex:4]; 
      _businessDetailContent.website  = [row objectAtIndex:5]; 
      _businessDetailContent.details  = [row objectAtIndex:6];  
      _businessDetailContent.imageName = [row objectAtIndex:7]; 

      // USE TO FILTER RESULTS 
      NSString *strFromInt = [NSString stringWithFormat:@"%d", self.tagNumber]; 

      if ([_businessDetailContent.no isEqualToString:@"1A"] || 
      [_businessDetailContent.no isEqualToString:@"2A"]) 

      { 
       [_threeStarArray addObject: _businessDetailContent]; 
      } 

    else if ([_businessDetailContent.no isEqualToString:@"1B"] || 
       [_businessDetailContent.no isEqualToString:@"2B"]) 

      { 
     [_fourStarArray addObject: _businessDetailContent]; 
      } 
     } 
     i++; 
    } 

    [_array addObject: _threeStarArray]; 
[_array addObject: _fourStarArray]; 

    return (NSArray *) self.filteredArray; 
} 

Есть ли лучший способ проверить/обработать это? Я подумал о добавлении другого поля в CSV-файл, который определит, например, отель как 3 или 4 звезды. И то же самое для всех предприятий. Тогда в приведенном выше коде я могу просто просмотреть этот вторичный идентификатор и в зависимости от того, что это такое, я добавляю его в свой собственный массив/раздел?

ответ

1

Для этого я был бы более склонен к нам NSMutableDictionary и придерживаться значения там:

[aDict setValue:threeStarArray forKey:@"three_star"]; 

и т.д ... Вы можете захватить данные конкретно и это более аккуратно, а не придерживаться всех элементов в 1 массив. Затем вы можете различать разделы в представлении таблицы по значению ключа.

Также вы не должны набрасывать NSArray, когда вы возвращаетесь (при условии, что self.filteredArray - это NSArray).

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