Swift: die übergabe von Daten zu einem Verschluss versehen, der Kontext erfasst

Ich versuche, eine Funktion aufzurufen, wenn die internet-Verbindung wiederhergestellt ist und die updateOnConnection variable true ist. Hier ist mein code:

func checkForConnection() {
    let host = "reddit.com"
    var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil)
    let reachability = SCNetworkReachabilityCreateWithName(nil, host)!

    SCNetworkReachabilitySetCallback(reachability, { (_, flags, _) in
        if flags.rawValue == 0 { //internet is not connected

        } else { //internet became connected
            if self.updateOnConnection {
                self.refreshWallpaper()
            }
        }
    }, &context)

    SCNetworkReachabilityScheduleWithRunLoop(reachability, CFRunLoopGetMain(), kCFRunLoopCommonModes)
}

Mein problem ist, dass die Linien:

        if self.updateOnConnection {
            self.refreshWallpaper()
        }

Ursache der Fehlermeldung: "A C function pointer cannot be formed from a closure that captures context"

Ich bin nicht sicher, wie Sie überprüfen den Zustand der updateOnConnection - und call - refreshWallpaper() im Verschluss, überwacht änderungen in der internet-Verbindung. Wie kann ich das beheben, oder ist es eine ganz andere Problemumgehung sollte ich verwenden?

InformationsquelleAutor yesthisisjoe | 2015-11-05
Schreibe einen Kommentar