2015-01-10 3 views
1

Что было бы приемлемым способом передачи данных более чем одним ViewController вперед? Например, в настоящее время у меня есть приложение iPhone с базовыми данными. Основные данные создаются в классе AppDelegate, а исходный ViewController - ViewController A. ViewController A не взаимодействует с Core Data, но он переходит в ViewController B, который взаимодействует с Core Data и требует, чтобы переменные (NSManagedObjectContext) настраивались в AppDelegate. Как я могу передать информацию из AppDelegate в ViewController B?Передача данных Несколько ViewControllers Вперед

Я читал, что синглтоны не являются хорошей практикой, так что имеет смысл просто передать переменную в ViewController A, а затем передать ее на ViewController B? Благодарю.

ответ

2

Одиночные игры - это прекрасно! Не позволяйте никому отпугивать их использование.

Это правда, что они могут быть неправильно, но это имеет смысл хранить данные в одном месте, чем передать данные тоскуют цепочку контроллеров отображения, которые не имеют никакого использования данных, только в случае вида контроллера вниз линия нуждается в этом!

Убедитесь, что вы следуете шаблонам дизайна Apple, и все должно быть в порядке.

Вот типичный способ для создания экземпляра одноплодного экземпляра класса:

+ (instancetype)singleton { 
    static <ClassName> *singleton = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     singleton = [[<ClassName> alloc] init]; 
     // If you have any other, one-time configuration that you 
     // don't handle in "init", also do it here 
    }); 
    return singleton; 
} 
+0

Хорошо, спасибо! Я могу сделать метод, подобный этому, чтобы получить контекст из AppDelegate и использовать его. – Impossibility

+2

Я бы сделал это отдельным классом. AppDelegate должен быть оставлен один, чтобы выполнять свою работу. Очень просто сделать отдельный класс для хранения данных, которые вам нужны. – mbm29414

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