Vraag Hoe krijg ik een verwijzing naar de app-afgevaardigde in Swift?


Hoe krijg ik een verwijzing naar de app-afgevaardigde in Swift?

Uiteindelijk wil ik de verwijzing gebruiken om toegang te krijgen tot de context van het beheerde object.


294
2018-06-04 19:42


oorsprong


antwoorden:


De andere oplossing is correct, omdat hiermee een verwijzing naar de gedelegeerde van de toepassing wordt weergegeven, maar u kunt hierdoor geen toegang krijgen tot methoden of variabelen die zijn toegevoegd door uw subklasse van UIApplication, zoals uw context voor beheerde objecten. Om dit op te lossen, gaat u eenvoudigweg naar "AppDelegate" of wat ooit uw UIApplication-subklasse wordt genoemd. Zoals zo:

Swift 3.x (geïntroduceerd met Xcode 8)

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

Swift 1.2 - 2.x (geïntroduceerd met Xcode 6.3)

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let aVariable = appDelegate.someVariable

Snel <1.2

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let aVariable = appDelegate.someVariable

605
2018-06-04 20:28



In Swift, eenvoudig toegankelijk in uw VC's

extension UIViewController {
    var appDelegate:AppDelegate {
        return UIApplication.sharedApplication().delegate as! AppDelegate
    }
}

28
2017-09-13 01:05



Het is vrijwel hetzelfde als in Objective-C

let del = UIApplication.sharedApplication().delegate

14
2018-06-04 19:45



Convenience-constructeurs

Voeg in AppDelegate Class toe aan het einde van de code

Swift 3 & 4

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

Wilt u de AppDelegate-referentie in uw klas gebruiken?


AppDelegate-methode aanroepen

appDelegate (). setRoot ()


13
2017-07-05 10:37



Dit kan worden gebruikt voor OS X

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

12
2018-02-22 17:57



Hier is de Swift 2.0-versie:

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

En om toegang te krijgen tot de context van het beheerde object:

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

        let moc = delegate.managedObjectContext

        // your code here

    }

of, met behulp van bewaker:

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

    let moc = delegate.managedObjectContext

    // your code here

11
2017-10-02 10:31



SWIFT <3

Maak een methode in AppDelegate Class voor ex

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

en noem het ergens anders voor ex

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

SWIFT> = 3.0

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

8
2017-08-19 12:37



Appart van wat hier wordt verteld, in mijn geval heb ik import UIKit gemist:

import UIKit

8
2018-04-20 15:16