2014-10-11 8 views
5

Ich verwende Code aus here:LocationServicesEnabled: APIs als veraltet

import UIKit 
import CoreLocation 

@UIApplicationMain 

class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate { 

var window: UIWindow? 
var locationManager: CLLocationManager! 
var seenError : Bool = false 
var locationFixAchieved : Bool = false 
var locationStatus : NSString = "Not Started" 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { 
    initLocationManager(); 
    return true 
} 

// Location Manager helper stuff 
func initLocationManager() { 
    seenError = false 
    locationFixAchieved = false 
    locationManager = CLLocationManager() 
    locationManager.delegate = self 
    locationManager.locationServicesEnabled 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 

    locationManager.requestAlwaysAuthorization() 
} 

// Location Manager Delegate stuff 

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) { 
    locationManager.stopUpdatingLocation() 
    if (error) { 
     if (seenError == false) { 
      seenError = true 
      print(error) 
     } 
    } 
} 

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: AnyObject[]!) { 
    if (locationFixAchieved == false) { 
     locationFixAchieved = true 
     var locationArray = locations as NSArray 
     var locationObj = locationArray.lastObject as CLLocation 
     var coord = locationObj.coordinate 

     println(coord.latitude) 
     println(coord.longitude) 
    } 
} 

func locationManager(manager: CLLocationManager!, 
    didChangeAuthorizationStatus status: CLAuthorizationStatus) { 
     var shouldIAllow = false 

     switch status { 
     case CLAuthorizationStatus.Restricted: 
      locationStatus = "Restricted Access to location" 
     case CLAuthorizationStatus.Denied: 
      locationStatus = "User denied access to location" 
     case CLAuthorizationStatus.NotDetermined: 
      locationStatus = "Status not determined" 
     default: 
      locationStatus = "Allowed to location Access" 
      shouldIAllow = true 
     } 
     NSNotificationCenter.defaultCenter().postNotificationName("LabelHasbeenUpdated", object: nil) 
     if (shouldIAllow == true) { 
      NSLog("Location to Allowed") 
      // Start location services 
      locationManager.startUpdatingLocation() 
     } else { 
      NSLog("Denied access: \(locationStatus)") 
     } 
} 
} 

Aber ich habe einen Fehler: 'locationServicesEnabled' ist nicht verfügbar: APIs wie von iOS veraltet 7 und früher sind nicht verfügbar in Swift.

Wer weiß, wie man das repariert?

Danke!

Antwort

6

Die locationServicesEnabled Eigenschaft auf einer Instanz von CLLocationManageris deprecated ab iOS 4.0, aber die class method nicht.

Also statt:

locationManager.locationServicesEnabled 

sollten Sie einfach die stattdessen folgende verwenden:

CLLocationManager.locationServicesEnabled() 
+0

Instanz-Methode ist seit iOS 4.0 – bllakjakk

+0

@smileyborg dank veraltet! Sorry, ich habe einen Fehler mit '' AnyObject []! '' 'Vergessen. Muss ich '' '[AnyObject]!' ''? – tim

+0

@bllakjakk Sie sind richtig - aktualisiert! – smileyborg