不能在不可变值数组上使用可变成员是一个只读 属性 swift 3
Cannot use mutating member on immutable value array is a get-only property swift 3
我明白这个问题,但我不知道如何解决,我找到了其他线程,但它们是非常具体的问题。
我有我的 var:
static var DeliveryStatusArray =
[
"claimable": [],
"onTime": [],
"future": [],
"claimDone": [],
"tooOld": [],
]
我的函数是:
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
}
在这个函数中,我想在 newJson["cards"] tmpArray 的开头插入。第二次我需要在 DeliveryStatusArray["status"] 传递 newJson。我的错误在线
newJson["cards"].array?.insert(tmpArray, at: 0)
在我看来,我的函数原型是:DashboardManager.moreCard(status: section, newJson: json["data"])
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
}
我明白这个问题,但我不知道如何解决,我找到了其他线程,但它们是非常具体的问题。 我有我的 var:
static var DeliveryStatusArray =
[
"claimable": [],
"onTime": [],
"future": [],
"claimDone": [],
"tooOld": [],
]
我的函数是:
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
}
在这个函数中,我想在 newJson["cards"] tmpArray 的开头插入。第二次我需要在 DeliveryStatusArray["status"] 传递 newJson。我的错误在线
newJson["cards"].array?.insert(tmpArray, at: 0)
在我看来,我的函数原型是:DashboardManager.moreCard(status: section, newJson: json["data"])
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
}