2017-03-22 3 views
0

私はこの問題を理解していますが、解決方法はわかりませんが、他のスレッドが見つかりました。 私はVARのための私を持っている:不変の値に変異メンバを使用することはできません配列はget-onlyプロパティですswift 3

static var DeliveryStatusArray = 
    [ 
     "claimable": [], 
     "onTime": [], 
     "future": [], 
     "claimDone": [], 
     "tooOld": [], 
    ] 

My機能は次のとおりです。私は[ "カード"] tmpArray newJsonの初めに挿入する。この機能で

static func moreCard(status:String, newJson: JSON) 
{ 
    var json = JSON(DeliveryStatusArray[status] as Any) 
    var tmpArray = json[0]["cards"].arrayValue 

    newJson["cards"].array?.insert(tmpArray, at: 0) 
    DashboardManager.DeliveryStatusArray[status]?.removeAll() 
    DashboardManager.DeliveryStatusArray[status] = tmpArray 
} 

。 2回目に、DeliveryStatusArray ["status"]にnewJsonを渡す必要があります。私の見解では

、私の関数のプロトタイプは次のとおりです。DashboardManager.moreCard(status: section, newJson: json["data"])

。?:私は(0、tmpArray)ライン

newJson [ "カード"]配列.insertに私のエラーを得ました

答えて

1

Swiftでは、メソッドパラメータとして定数のみを使用できます。問題を解決するには、以下のようにメソッド内のinoutパラメータを使用します。

static func moreCard(status:String, newJson: inout JSON) 
    { 
    var json = JSON(DeliveryStatusArray[status] as Any) 
    var tmpArray = json[0]["cards"].arrayValue 

    newJson["cards"].array?.insert(tmpArray, at: 0) 
    DashboardManager.DeliveryStatusArray[status]?.removeAll() 
    DashboardManager.DeliveryStatusArray[status] = tmpArray 
    } 
+0

プロトタイプを変更する必要がありますか? ** DashboardManager.moreCardに変更したとき(状態:section、newJson:json ["data"])** 同じエラーがありますが、プロトタイプを変更しなければエラーが発生します* * 'Json'型の値をinoutパラメータに渡すには、明示的に&** –

+0

が必要です。事前に作成したプロトタイプオブジェクトをinoutパラメータに渡すだけで、メソッド内でそのオブジェクトを変更することはできません。メソッドで渡されるパラメータは、DashboardManager.moreCard(status:section、newJson:&json ["data"])または 'var jsondata = json [" data "]、DashboardManager.moreCard(status:section、newJson:&jsondata) ' –

関連する問題