创建或正确使用单例的内容
What to create or properly use a singleton
我想分享坐标实例并在
DiscoverDetailVc。我的应用程序上有 2 个位置管理器实例,之后
结合研究和阅读,发现最好的方法是创建每个 VC 将使用的单例。我想出了以下代码,但问题是在 DiscoverDetailVC 上,DiscoverRestaurantTableViewController.shared.coordinates 为零,但是当我从 DiscoverRestaurantVC 打印坐标时,我可以看到坐标值。为了正确处理,我做错了什么。
谢谢
class DiscoverRestaurantTableViewController: UITableViewController, CLLocationManagerDelegate {
static let shared = DiscoverRestaurantTableViewController()
let locationManager = CLLocationManager()
var coordinates: CLLocationCoordinate2D?
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// Default implementation to get the coordinates
coordinates = location.coordinate
}
class DiscoverDetailViewController: UIViewController {
func getDirections (){
let coordinate = DiscoverRestaurantTableViewController.shared.coordinates
guard let location = coordinate.coordinates else {return print("booon")}
}
}
将coordinates = location.coordinate
更改为DiscoverRestaurantTableViewController.shared.coordinates = location.coordinate
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
//coordinates = location.coordinate
DiscoverRestaurantTableViewController.shared.coordinates = location.coordinate
}
但是创建新的 class 和管理单例对象是很好的。在TableViewController
.
内创建单例看起来不太好
希望对您有所帮助。
我想分享坐标实例并在 DiscoverDetailVc。我的应用程序上有 2 个位置管理器实例,之后 结合研究和阅读,发现最好的方法是创建每个 VC 将使用的单例。我想出了以下代码,但问题是在 DiscoverDetailVC 上,DiscoverRestaurantTableViewController.shared.coordinates 为零,但是当我从 DiscoverRestaurantVC 打印坐标时,我可以看到坐标值。为了正确处理,我做错了什么。
谢谢
class DiscoverRestaurantTableViewController: UITableViewController, CLLocationManagerDelegate {
static let shared = DiscoverRestaurantTableViewController()
let locationManager = CLLocationManager()
var coordinates: CLLocationCoordinate2D?
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// Default implementation to get the coordinates
coordinates = location.coordinate
}
class DiscoverDetailViewController: UIViewController {
func getDirections (){
let coordinate = DiscoverRestaurantTableViewController.shared.coordinates
guard let location = coordinate.coordinates else {return print("booon")}
}
}
将coordinates = location.coordinate
更改为DiscoverRestaurantTableViewController.shared.coordinates = location.coordinate
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
//coordinates = location.coordinate
DiscoverRestaurantTableViewController.shared.coordinates = location.coordinate
}
但是创建新的 class 和管理单例对象是很好的。在TableViewController
.
希望对您有所帮助。