Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community!

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial


Reagan Jobe
Reagan Jobe
Courses Plus Student 15,598 Points

getting ibeacon data out of the AppDelegate

I am trying to get the details of the closest ibeacon out of my AppDelegate file to use in my View controller. I'm using Swift and have completed all of the courses TreeHouse has to offer but none cover what I'm looking for. My AppDelegate.swift file reads as follows:

'''swift import UIKit import CoreLocation

@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate {

var window: UIWindow?
var locationManager: CLLocationManager?
var lastProximity: CLProximity?

func application(application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {

        let uuidString = "99C2E498-7606-4575-A353-5F710834E75b"
        let beaconIdentifier = "com.company"
        let beaconUUID:NSUUID = NSUUID(UUIDString: uuidString)
        let beaconRegion:CLBeaconRegion = CLBeaconRegion(proximityUUID: beaconUUID,
            identifier: beaconIdentifier)

        locationManager = CLLocationManager()

        if(locationManager!.respondsToSelector("requestAlwaysAuthorization")) {

        locationManager!.delegate = self
        locationManager!.pausesLocationUpdatesAutomatically = false


        if(application.respondsToSelector("registerUserNotificationSettings:")) {
                    forTypes: UIUserNotificationType.Alert,
                    categories: nil

        return true

func applicationWillResignActive(application: UIApplication) {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

func applicationDidEnterBackground(application: UIApplication) {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

func applicationWillEnterForeground(application: UIApplication) {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.

func applicationDidBecomeActive(application: UIApplication) {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

func applicationWillTerminate(application: UIApplication) {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.


extension AppDelegate: CLLocationManagerDelegate { func sendLocalNotificationWithMessage(message: String!) { let notification:UILocalNotification = UILocalNotification() notification.alertBody = message UIApplication.sharedApplication().scheduleLocalNotification(notification) }

func locationManager(manager: CLLocationManager!,
    didRangeBeacons beacons: [AnyObject]!,
    inRegion region: CLBeaconRegion!) {

        var message:String = ""

        if(beacons.count > 0) {
            let nearestBeacon:CLBeacon = beacons[0] as CLBeacon

            if(nearestBeacon.proximity == lastProximity ||
                nearestBeacon.proximity == CLProximity.Unknown) {
            lastProximity = nearestBeacon.proximity;
            lastMajorValue = nearestBeacon.major;

            switch nearestBeacon.proximity {
            case CLProximity.Far:
                message = "You are far away from the beacon"
            case CLProximity.Near:
                message = "You are near the beacon"
            case CLProximity.Immediate:
                message = "You are in the immediate proximity of the beacon"
            case CLProximity.Unknown:
        } else {

            if(lastProximity == CLProximity.Unknown) {

            message = "No beacons are nearby"
            lastProximity = CLProximity.Unknown

        NSLog("%@", message)

func locationManager(manager: CLLocationManager!,
    didEnterRegion region: CLRegion!) {
        manager.startRangingBeaconsInRegion(region as CLBeaconRegion)

        NSLog("You entered the region")

func locationManager(manager: CLLocationManager!,
    didExitRegion region: CLRegion!) {
        manager.stopRangingBeaconsInRegion(region as CLBeaconRegion)

        NSLog("You exited the region")

} '''

I can get the information to print to the console I just can't get it over to my ViewController.swift file so I can use it to change a graphic in an if else statement.

Any help would be so appreciated.