2015-11-04 5 views
2

Я прочитал, что эта строка кода получает контекст управляемого объекта из AppDelegate.(UIApplication.sharedApplication(). Delegate as AppDelegate) .managedObjectContext

let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext 

Я прочитал документацию Apple по каждому слову, чтобы попытаться восстановить правильный общий выход, упомянутый выше. Кто может ясно и подробно объяснить смысл синтаксиса этой строки?

ответ

2

Сначала вы получаете доступ к классу UIApplication.

Это одноэлементный. Существует только один экземпляр, который создается при запуске приложения с помощью рамки какао.

Затем вы получаете доступ к своему единственному экземпляру, вызывая метод класса sharedApplication. «shared (classname)» - это общее имя для метода, возвращающего экземпляр одноэлементного. Другим распространенным именем является «sharedInstance».

Затем вы получаете доступ к своему delegate. Это следует за обычной схемой делегирования, которую вы часто видите в разработке приложений iOS с использованием какао-touch. Но это особый делегат, который у вас есть. Это класс AppDelegate. Когда вы позволяете Xcode создавать новый проект приложения с использованием основных данных, он создает некоторые стандартные методы в вашем классе AppDelegate для вашего удобства.

Один из них (вычисленный) геттер для managedObjectContext.

Однако UIApplication знает своего делегата только как о любом объекте, который реализует протокол UIApplicationDelegate. Дополнительные методы для основных данных не известны до UIApplication.

Вот почему вы должны отображать вывод .sharedApplication() на свой сайт с именем AppDelegate. as - оператор литья в Свифте.

После того, как оно было выполнено, вы можете получить доступ к получателю managedObjectContext.

Все.

+0

Я также ищу ответ на этот вопрос. Это действительно хороший ответ. Я почти поняла. Но я путаюсь здесь ». Однако UIApplication знает своего делегата только как любой объект, который реализует протокол UIApplicationDelegate. Дополнительные методы для основных данных не известны UIApplication». Можете ли вы объяснить этот момент более подробно. Благодарю. – Alamin

+1

@bir, делегат объявлен как нечто вроде 'id delegate;' И это то, что вы получаете от 'UIApplication.sharedApplication()'. Поэтому вам нужно передать возвращаемое значение классу вашей реализации 'UIApplicationDelegate', который, по-видимому, является' AppDelegate'. –

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