无法在ViewController中的AppDelegate中使用数组

时间:2015-06-16 07:19:23

标签: ios iphone swift ibeacon

在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中。那么,问题是什么以及如何访问它?

1 个答案:

答案 0 :(得分:0)

CLLocationManagerDelegate的方法locationManager(manager:,didRangeBeacons beacons:, inRegion:)是异步调用。在这里,您尝试使用beacons方法在ViewController中获取viewDidLoad的值。

AppDelegate上的方法可能会在视图控制器的viewDidLoad之后触发。

检查viewDidLoad

之前是否未调用locationManager(manager:,didRangeBeacons beacons:, inRegion:)