在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
中。那么,问题是什么以及如何访问它?
答案 0 :(得分:0)
CLLocationManagerDelegate
的方法locationManager(manager:,didRangeBeacons beacons:, inRegion:)
是异步调用。在这里,您尝试使用beacons
方法在ViewController
中获取viewDidLoad
的值。
AppDelegate上的方法可能会在视图控制器的viewDidLoad之后触发。
检查viewDidLoad
locationManager(manager:,didRangeBeacons beacons:, inRegion:)