2014-02-14 2 views
0

У меня есть локальный файл json с именем «list.json» в моем Xcode, и я прочитаю этот файл, чтобы показать свою информацию в UITableView, я хочу использовать шаблон проектирования для этой реализации Как шаблон Singleton, не могли бы вы дать мне подсказку, что хорошо использовать Singleton или нет, и как я могу повторно реализовать этот метод?Дизайн шаблона для чтения информации из локального json on UITableView

Заранее благодарен!

здесь так, что я прочитал может JSon:

-(void)readDataFromFile 
{ 
    NSString * filePath =[[NSBundle mainBundle] pathForResource:@"list" ofType:@"json"]; 

    NSError * error; 
    NSString* fileContents =[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; 


    if(error) 
    { 
     NSLog(@"Error reading file: %@",error.localizedDescription); 
    } 
    self.data = (NSArray *)[NSJSONSerialization JSONObjectWithData:[fileContents dataUsingEncoding:NSUTF8StringEncoding] options:0 error:NULL]; 
} 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self readDataFromFile]; 

    [self.tableView reloadData]; 
} 
+2

«Я хочу использовать шаблон дизайна». Нет. Вы изучаете образцы моделей и научитесь применять их, когда это необходимо. Не потому, что «использование шаблонов дизайна является хорошим». В вашем случае вам не нужен шаблон дизайна [даже] (http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/) [меньше] (http: // blogs. msdn.com/b/scottdensmore/archive/2004/05/25/140827.aspx) [a Singleton] (https://sites.google.com/site/steveyegge2/singleton-considered-stupid). –

+0

В момент, когда вы выполняете [self readDataFromFile], у вас есть данные в читаемом формате, поэтому вы можете просто получить доступ к определенному объекту в JSON в cellForRowAtIndexPath, чтобы отобразить то, что вам нужно. – Nick

ответ

0

Когда мы говорим о шаблоне проектирования, следует иметь в виду, что мы не должны настаивать на том, шаблон проектирования, чтобы поместиться в сценарии. Скорее, мы должны выбрать конкретный шаблон проектирования, основанный на сценарии.

И это также важно знать, что шаблоны проектирования побочным продуктом некоторых известных инструментов, которые являются:

  • принципы проектирования
  • удаления кода запахов через рефакторинга

Держа их в Разум, вы можете подумать о интерфейсе IReader для своего сценария, который может иметь метод Read(), который принимает имя файла как входной и возвращает список объектов. Класс JsonReader может реализовать метод Read()IReader.

Теперь вам нужно отправить собранную информацию от Json на элемент управления, например UITableView. Здесь вместо того, чтобы сделать UITableView тесно связанным с Json, вы можете рассмотреть другой интерфейс IBinder, который может иметь метод, принимающий экземпляр IReader и другой экземпляр ITable и привязывает данные к ITable. Более поздний интерфейс реализуется некоторым другим классом: UITableViewController, который принимает в своем конструкторе экземпляр UITableView. UITableViewController класс обеспечит механизмы доступа к выходам и действиям UITableView.

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