【问题标题】:Where do I save reference to list of GMSMarkers我在哪里保存对 GMSMarkers 列表的引用
【发布时间】:2017-03-06 17:12:42
【问题描述】:

我正在 Swift 3 中构建一个 iOS 应用程序,它使用在我的 ViewController 的地图上显示的 GMSMarker 列表。标记列表由我的模型数组组成Store

mi ViewController中的代码是:

class ViewController: UIViewController {

    // MARK: - IBOutlets

    @IBOutlet weak var mapView: GMSMapView!
    @IBOutlet weak var tableView: UITableView!


    var stores: [Store]!


    override func viewDidLoad() {
        super.viewDidLoad()
        stores = Store.listStores()
    }

  ...
  ...
  ...
}

我需要知道这些标记的参考,因为我想在应用中发生某些事情时更改他们的 snippet 信息。

问题是我不知道按照MVC(模型、视图、控制器)的概念保存引用的最佳方法是什么,我将解释我的两个选项已经想过了。

  1. ViewController中创建一个全局array,然后调用我的函数为Store数组中的每个store创建一个GMSMarker,并将其保存在全局array中。
  2. 在我的Store 类中导入GoogleMaps 并创建一个GMSMarker 属性。在init() 中初始化GMSMarker 并将其分配给创建的属性。这样做我将始终引用标记,因此我认为这是低效的,因为标记仅用于一个 ViewController,但 Store 对象用于应用程序的不同部分

哪一个是最好的方法?有没有其他方法可以做得更好?

【问题讨论】:

    标签: ios swift model-view-controller


    【解决方案1】:

    尝试将有关该标记的相关信息添加到您可以存储到 Store 模型中的自定义结构或类中,然后您可以在控制器中创建一个方法,该方法返回带有存储信息的构建标记。这很好,因为您将 Google 服务与您自己的模型断开连接。因此,如果您要将 Google Maps 更改为其他地图框架,则只需更改标记生成器方法即可。

    【讨论】:

      猜你喜欢
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2010-10-10
      • 2020-08-04
      相关资源
      最近更新 更多