[swift] Swift에서 앱 델리게이트에 대한 참조를 얻으려면 어떻게해야합니까?

Swift에서 앱 델리게이트에 대한 참조를 얻으려면 어떻게해야합니까?

궁극적으로 참조를 사용하여 관리 객체 컨텍스트에 액세스하고 싶습니다.



답변

다른 솔루션은 응용 프로그램의 대리자에 대한 참조를 얻는다는 점에서 맞지만 관리되는 객체 컨텍스트와 같이 UIApplication의 하위 클래스에 의해 추가 된 메서드 나 변수에는 액세스 할 수 없습니다. 이 문제를 해결하려면 간단히 “AppDelegate”로 다운 캐스트하거나 UIApplication 서브 클래스를 호출하십시오. 에서는 신속한 3, 4 및 5 는 다음과 같이, 이것은 이루어진다 :

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let aVariable = appDelegate.someVariable


답변

스위프트 4.2

스위프트에서는 VC에서 쉽게 액세스 할 수 있습니다.

extension UIViewController {
    var appDelegate: AppDelegate {
    return UIApplication.shared.delegate as! AppDelegate
   }
}


답변

편의 생성자

코드 끝에 AppDelegate 클래스에 추가

스위프트 5

func appDelegate() -> AppDelegate {
    return UIApplication.shared.delegate as! AppDelegate
}

수업에서 AppDelegate 참조를 사용하려면?


AppDelegate 메소드 호출

appDelegate (). setRoot ()


답변

Objective-C와 거의 동일합니다.

let del = UIApplication.sharedApplication().delegate


답변

이것은 OS X에 사용될 수 있습니다

let appDelegate = NSApplication.sharedApplication().delegate as AppDelegate
var managedObjectContext = appDelegate.managedObjectContext?


답변

Swift 2.0 버전은 다음과 같습니다.

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

그리고 관리 객체 컨텍스트에 액세스하려면 :

    if let delegate = UIApplication.sharedApplication().delegate as? AppDelegate {

        let moc = delegate.managedObjectContext

        // your code here

    }

또는 guard를 사용하여 :

    guard let delegate = UIApplication.sharedApplication().delegate as? AppDelegate  else {
        return
    }

    let moc = delegate.managedObjectContext

    // your code here


답변

스위프트 <3

Ex 용 AppDelegate 클래스에서 메소드 작성

func sharedInstance() -> AppDelegate{
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }

전 다른 곳으로 불러

let appDelegate : AppDelegate = AppDelegate().sharedInstance()

스위프트> = 3.0

func sharedInstance() -> AppDelegate{
    return UIApplication.shared.delegate as! AppDelegate
}