在AppDelegate中,我有下一个扩展:
extension AppDelegate: CLLocationManagerDelegate {
func locationManager(manager: CLLocationManager!,didRangeBeacons beacons: [AnyObject]!, inRegion region: CLBeaconRegion!) {
let viewController:ViewController = window!.rootViewController as! ViewController
viewController.beacons = beacons as! [CLBeacon]?
NSLog("didRangeBeacons");
}
}
在ViewController中,我这样做:
class ViewController: UIViewController {
var beacons: [CLBeacon]?
override func viewDidLoad() {
super.viewDidLoad()
if(beacons != nil){
println(beacons![0])
}
}
}
而且它什么也没印出来。但是它不是空的,是一个数组。它在日志
didRangeBeacons
中打印。那么,问题出在哪里,我该如何解决呢? 最佳答案
CLLocationManagerDelegate
的方法locationManager(manager:,didRangeBeacons beacons:, inRegion:)
是异步调用。在这里,您尝试通过beacons
方法在ViewController
中获取viewDidLoad
的值。
AppDelegate上的方法可能在视图控制器的viewDidLoad之后触发。
检查viewDidLoad
之前是否未调用locationManager(manager:,didRangeBeacons beacons:, inRegion:)
关于ios - 无法在ViewController的AppDelegate中使用数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30861152/