在"中指定值"常量变量,位于cocoapods内部

时间:2017-09-28 05:33:42

标签: ios swift mapbox

我的应用程序有第三方" Mapbox",它是通过pod导入的。

现在我想用API响应更改值。但是要分配,因为它是" let"不变。

所以我创建了一个" Extenstion"具有以下计算属性的该类的文件以设置该值。

extension RouteStep {
   var maneuverLocation: CLLocationCoordinate2D {
       get
       {
           return self.maneuverLocation
       }
       set
       {
           self.maneuverLocation = newValue
       }
    }
}

我传递的价值如下:

 let step : RouteStep = RouteStep.init(json: jsonObject)
    step.maneuverLocation = maneuverLocation

但它给出了无效类型的错误,如enter image description here后面的图像

1 个答案:

答案 0 :(得分:2)

很明显为什么你会陷入无限循环,但即使你能够解决这个问题,这里的问题是Swift扩展不支持存储属性。

您可以拥有计算属性但不能存储属性,无论如何都不能直接使用。

如果RouteStep派生自Obj-C运行时,则可以使用关联的属性作为解决方案。这个post解释了如何执行该操作。

我想,如果你能解释一下你的意思以及你想要实现什么,那么社区可以更好地帮助你。

  

现在我想用API响应更改值。但是可以   分配,因为它是" let"恒定。

编辑 :(在OP解释了有关此问题的更多信息后)

如果在SDK中将maneuverLocation变量声明为let,则无法在扩展中更改它。也许你可以继承RouteStep的子类,如果它是一个类并提供一个init,如果它是一个值类型,我想你可以在它的扩展中添加方便init。创建实例后,无法更改let变量中的值。它必须在init内完成。