0
我有一個func中的json數據1獲取數據有1個列表值,但我用userdefault出去func調用值我得到1個值。如何獲取UserDefaults中的列表值
func getdevices() {
var token = UserDefaults.standard.string(forKey: "token")
print("token", token)
var username = UserDefaults.standard.string(forKey: "username")
print("username", username)
let url: URL = URL(string: "/public/devices")!
let request: NSMutableURLRequest = NSMutableURLRequest(url: url)
request.httpMethod = "Get"
request.setValue(token , forHTTPHeaderField: "token")
request.setValue(username, forHTTPHeaderField: "username")
var responseError: NSError?
var response: URLResponse?
var urlData: Data?
do {
urlData = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning:&response)
} catch let error as NSError {
responseError = error
urlData = nil
}
if (urlData != nil) {
let res = response as! HTTPURLResponse!;
print("Response code: %ld tra ve" , res?.statusCode);
if ((res?.statusCode)! >= 200 && (res?.statusCode)! < 300)
{
//let responseData:NSString = NSString(data:urlData!, encoding:String.Encoding.utf8.rawValue)!
if let json = try? JSONSerialization.jsonObject(with: urlData!, options: []) as? [String : Any],
//let dataArray = json?["status"] as? [String : Any],
let items = json?["units"] as? [[String : Any]] {
for item in items {
var lat = item["latitude"] as? String
UserDefaults.standard.set(lat, forKey: "latitude")
var test = UserDefaults.standard.double(forKey: "latitude")
print("test", test)
var long = item["longitude"] as? String
UserDefaults.standard.set(long, forKey: "longitude")
print("long", long)
var devid = item["devid"] as? String
UserDefaults.standard.set(devid, forKey: "devid")
var devname = item["devname"] as? String
UserDefaults.standard.set(devname, forKey: "devname")
var speed = item["speed"] as? String
UserDefaults.standard.set(speed, forKey: "speed")
var statustt = item["status"] as? String
UserDefaults.standard.set(statustt, forKey: "statusxe")
var drivername = item["drivername"] as? String
UserDefaults.standard.set(drivername, forKey: "drivername")
var address = item["address"] as? String
UserDefaults.standard.set(address, forKey: "address")
print("address", address)
}
}
}
}
}
但是,當應用程序存在func它不會得到列表數據,它有一個值。
override func viewDidAppear(_ animated: Bool) {
GMSServices.provideAPIKey("AIzaSyB2IJzNc2s5km1qvdwAePDEat1OdPsOFVA")
guard let address = UserDefaults.standard.string(forKey: "address") else {return}
getdevices()
var lat = UserDefaults.standard.double(forKey: "latitude")
var long = UserDefaults.standard.double(forKey: "longitude")
var devname = UserDefaults.standard.string(forKey: "devname")
var speed = UserDefaults.standard.string(forKey: "speed")
print("lat", lat)
print("long", long)
print("address***", address)
let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: long, zoom: 10)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
view = mapView
let marKer = GMSMarker()
marKer.position = CLLocationCoordinate2D(latitude: lat, longitude: long)
marKer.icon = UIImage(named: "vehicle_105")
marKer.title = "Biển số \(devname)"
//marKer.title = "Speed \(speed)"
marKer.map = mapView
}
請將代碼複製並粘貼到您的問題,而不是使用圖像。這將使回答者更容易理解,並幫助您避免您的問題被標記。 – Jonathan
不相關,但你不關心你在代碼中的許多警告嗎?例如'sendSynchronousRequest'已過時幾年。 – vadian