2017-09-28 36 views
0

我的應用程序有一個第三方「Mapbox」,它通過pod導入。在「let」常量變量中分配值,它位於cocoapods中

現在我想改變我的API響應的價值。但可以分配,因爲它是一個「讓」常數。

所以我創建了這個類的「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下爲什麼你停留在一個無限循環圖像

+0

你可以多一點描述性。我可以在那裏寫什麼? – Myaaoonn

+0

,這對我來說似乎是一個無限循環......並且基於你的「延伸」,它確實是一個無限循環。 – holex

回答

2

其明顯的,但即使你能解決這個問題,這裏的問題是Swift擴展不支持存儲屬性。

你可以有一個計算屬性,但不是存儲屬性,反正不是直接的方式。

如果RouteStep是從Obj-C運行時派生的,那麼您可以使用關聯的屬性作爲解決方案。這post解釋如何執行該操作。

我想,如果你能解釋你的意思和你想要實現什麼,那麼社區可以幫助你更好。

現在我想改變我的API響應值。但可以通過 分配,因爲它是「let」常數。

編輯:(後OP解釋更多關於這個問題)

如果maneuverLocation變量聲明爲讓SDK裏面,有沒有辦法可以在擴展更改。也許你可以繼承RouteStep,如果它是一個類,並提供一個初始化,如果它的值類型,我想你可以在其擴展中添加便利init。一旦創建實例,就無法更改let變量中的值。它必須在init中完成。

+0

那麼有沒有其他的解決方案來設置我的價值觀相同。我需要它來存儲 – Myaaoonn

+1

Awesome Obj-C運行時解決方案! –

+0

@Puneet從我的API響應中,我得到了「maneuverLocation」,我想用SDK替換它。 – Myaaoonn