我在哪里保存对GMSMarkers列表的引用

时间:2017-03-06 17:12:42

标签: ios swift model-view-controller

我正在 Swift 3 中构建 iOS 应用程序,该应用程序使用我GMSMarker地图上显示的ViewController列表。标记列表由我的模型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. array中创建全局ViewController,然后调用我的函数为GMSMarker数组中的每个store创建Store并将其保存在全球array
  2. GoogleMaps课程中导入Store并创建GMSMarker媒体资源。在init()初始化GMSMarker并将其分配给创建的属性。这样做我总是会引用标记,因此我觉得这样做效率很低,因为标记仅用于一个ViewController,但Store对象用于应用程序的不同部分
  3. 哪一个是最好的方法?还有其他方法可以做得更好吗?

1 个答案:

答案 0 :(得分:0)

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