我刚开始使用iOS上的SWIFT编程。但是我在其他语言方面有很好的经验,比如JAVA,C#和PHP。也就是说,我遇到了一些问题。我正在创建一个简单的应用程序,它将根据用户的地理位置显示用户信息。我按照列出的here教程。
然而,由于很多事情在Swift 2.x和3.x之间发生了变化,我不得不修改他的代码。不太难,到目前为止我已经得到它编译。但是,应用程序从未要求我允许我使用设备的位置。
我已按照Apple列出的here指示放置" NSLocationAlwaysUsageDescription"在Info.plist中。但是我从未被提示过。下面列出了应显示此警报的相关代码段。
非常感谢任何帮助。感谢。
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// 1. status is not determined
if CLLocationManager.authorizationStatus() == .notDetermined {
locationManager.requestAlwaysAuthorization()
}
// 2. authorization were denied
else if CLLocationManager.authorizationStatus() == .denied {
let controller = UIAlertController(title: "Error!", message: "Location services were previously denied. Please enable location services for this app in Settings.", preferredStyle: .alert)
let alertAction = UIAlertAction(title: "Dismiss", style: .destructive) { (action) in
print("Dismiss button tapped!")
}
controller.addAction(alertAction)
}
// 3. we do have authorization
else if CLLocationManager.authorizationStatus() == .authorizedAlways {
locationManager.startUpdatingLocation()
}
}
答案 0 :(得分:1)
您的代码运行正常,只需要提示您的警报:
self.present(controller, animated: true, completion: nil)
另请查看我的回答here如何将switch
用于此类代码。