2015-06-23 45 views
1

我該如何去有關設置長和緯度值(兩者都顯示在應用程序運行),以一個全局變量?該值是目前如何使FUNC價值全局常量在斯威夫特

String(format: "4.4f", latestLocation.coordinate.latitude) 

String(format: "4.4f", latestLocation.coordinate.longitude) 

我要讓這些全局常量像userlatitudeuserlongitude可在函數外部訪問。我需要歸還一些有意義的希望嗎?

func locationManager(manager: CLLocationManager!, 
    didUpdateLocations locations: [AnyObject]!) 
{ 
    var latestLocation = locations.last as! CLLocation 

    latitude.text = String(format: "%.4f", 
     latestLocation.coordinate.latitude) 
    longitude.text = String(format: "%.4f", 
     latestLocation.coordinate.longitude) 
} 

回答

1

這種方式可以位置存儲NSUserDefaults此鏈接:

//First Convert it to NSNumber. 
let lat : NSNumber = NSNumber(double: Location.latitude) 
let lng : NSNumber = NSNumber(double: Location.longitude) 

//Store it into Dictionary 
let locationDict = ["lat": lat, "lng": lng] 

//Store that Dictionary into NSUserDefaults 
NSUserDefaults.standardUserDefaults().setObject(locationDict, forKey: "Location") 

之後,你可以這樣任何你想要訪問:

//Access that stored Values 
let userLoc = NSUserDefaults.standardUserDefaults().objectForKey("Location") as! [String : NSNumber] 

//Get user location from that Dictionary 
let userLat = userLoc["lat"] 
let userLng = userLoc["lng"] 

var Annotation = MKPointAnnotation() 

Annotation.coordinate.latitude = userLat as! CLLocationDegrees //Convert NSNumber to CLLocationDegrees 
Annotation.coordinate.longitude = userLng as! CLLocationDegrees //Convert NSNumber to CLLocationDegrees 
+0

謝謝你,這個工作。非常感謝Dharmesh! –

+0

嗨@Dharmesh Kheni,當我訪問視圖中的變量所做的初始畫面上的加載方法,它說有「致命的錯誤:意外發現零而展開的可選值」。是它保存後屏幕加載,導致一個零?我該如何解決? –

+0

@ JoshO'Connor,請在Swift中學習可選和解包。 –

0
  1. 定義您的變量下面import語句。喜歡的東西,

    import UIKit 
    
    let latitude = 4.0 
    
    // Do Stuff - This Variable access in Any class. Thanx Swift.... 
    
  2. 另一種解決方案是把你的價值.plist/NSUser默認和訪問每個班級都在使用相應的密鑰(應該在哪裏你希望使用)。