I am trying to call a function when the internet connection is restored and the updateOnConnection
variable is true. Here is my 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)
}
My problem is that the lines:
if self.updateOnConnection {
self.refreshWallpaper()
}
cause the error: "A C function pointer cannot be formed from a closure that captures context
"
I am not sure how to check the state of updateOnConnection
and call refreshWallpaper()
in the closure that monitors changes in the internet connection. How can I fix this, or is there a totally different workaround I should be using?