2013-06-11 2 views
0

Я знаю, что существует намного лучший/простой способ создать NSArray из маленьких объектов NSDictionary, возможно, используя KVC или некоторую причудливость Obj-C 2.0, но я не мог найти его и было точно так же, как напечатать его. Мой класс: @interface PDDetailShowModel: NSObjectПожалуйста, помогите мне избежать будущего нарушения принципа DRY

@property(nonatomic, strong, readonly)NSString *showid; 
@property(nonatomic, strong, readonly)NSString *showdate; 
@property(nonatomic, strong, readonly)NSString *showyear; 
@property(nonatomic, strong, readonly)NSString *city; 
@property(nonatomic, strong, readonly)NSString *state; 
@property(nonatomic, strong, readonly)NSString *country; 
... 

Метод:

- (NSArray *) createArrayForTableView 
{ 
    NSMutableArray *list = [NSMutableArray array]; 
    NSDictionary *dict = @{@"venue":_venue}; 
    [list addObject:dict]; 
    NSDictionary *dict1 = @{@"city":_city}; 
    [list addObject:dict1]; 
    NSDictionary *dict2 = @{@"state":_state}; 
    [list addObject:dict2]; 
    NSDictionary *dict3 = @{@"country":_country}; 
    .... 
    return [NSArray arrayWithArray:list]; 
} 

Моя конечная цель, чтобы заполнить хороший UITableView с заголовками секций. Я получил все это от вызова API JSON, но это не в том порядке, который я хочу для TableView.

+1

Почему вы помещаете словари в массив? – paulmelnikow

+1

Что вам кажется разумным. – Jeremy

+0

UITableViewControllers работают очень удобно, если вы моделируете данные в NSArray. –

ответ

2

Вы можете обернуть словарные литералы в литерал массива.

В качестве альтернативы, чтобы избежать перекомпиляции с изменениями или избежать ненужного потребления памяти, вы можете создать в своем проекте пласт и отредактировать его при необходимости и просто инициализировать массив с помощью initWithContentsOfURL: [[NSBundle mainBundle] URLForResource: @ "plistFileName «];

+0

Итак, я бы поместил свойства моего объекта, которые хочу отобразить в .plist, а затем сгенерировал NSArray ключей свойств для использования с кодировкой по ключевым словам? –

+0

Да что-то в этом роде. Пока вы знаете свои ключи, вы можете использовать KVC. Вы можете использовать те же самые ключи из plist, чтобы настроить свои структуры данных, а затем настроить любые действия на основе KVC в общем обобщенном виде. Это может помочь в развязывании кода из конфигурации. Решение u choose всегда будет иметь компромисс. – uchuugaka

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