如何传递字典中的值。
模型: -
class cartresultModel: NSObject {
var totalsum:String!
var totalid:String!
init?(dictionary:JSONDictionary) {
guard let totalsum = dictionary["totalsum"] as? String,
let totalid = dictionary["totalid"] as? String else {
return
}
self.totalsum = totalsum
self.totalid = totalid
print( self.totalsum )
}
}
datasourcemodel: -
class CartresultDataSource: NSObject {
var dataListArray:Array<cartresultModel>? = []
init(array :Array<[String:Any]>?) {
super.init()
var newArray:Array<[String:Any]> = []
if array == nil{
newArray = self.getJsonDataStored222()
}
else{
newArray = array!
}
var datalist:Array<cartresultModel> = []
for dict in newArray{
let model = cartresultModel(dictionary: dict)
datalist.append(model!)
}
self.dataListArray = datalist
}
}
typealias dummyDataSource222 = CartresultDataSource
extension dummyDataSource222{
func getJsonDataStored222() ->Array<Dictionary<String,String>>{
let jsonArray = [["totalid":"1","totalsum":"0"]] as Array<Dictionary<String,String>>
return jsonArray
}
}
我的viewmodel: -
class CartresultViewModel: NSObject {
var datasourceModel:CartresultDataSource
var no: [String] = []
var filteredListArray:Array<cartresultModel>? = []
init(withdatasource newDatasourceModel: CartresultDataSource) {
datasourceModel = newDatasourceModel
print(datasourceModel.dataListArray)
}
func datafordisplay(objectatindex index: Int) -> cartresultModel{
return (datasourceModel.dataListArray?[index])!
}
func numberOfRowsInSection(section:Int) -> Int {
return datasourceModel.dataListArray!.count
}
}
我的cartdisplayresult视图: -
class CartdisplayView: UIView {
@IBOutlet weak var totalresult:UILabel!
override init(frame:CGRect)
{
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder:aDecoder)
}
func setcartdetailData(cartsdetail:QM_cartresultModel)
{
// self.totalresult.text = cartsdetail.totalsum
}
}
从其他viewcontroller我发送了self.no中的总价格金额(这是在cartresultviewmodel中)。
假设the output is ["[123]"]
从这个输出我需要取值123 .AS我的cartdatasource: -
让jsonArray = [[“totalid”:“1”,“totalsum”:“0”]]作为数组&gt;
这里totalSum = 0
但我需要在总计密钥中传递123.Means我需要得到totalsum = 123 如何通过。那么如何在cartresultview.means中设置这个值:-self.totalresult.text =?
答案 0 :(得分:0)
你可以这样做
jsonArray[0]["totalsum"] = "123"
如果让忽略nil崩溃
,最好放入 if let _ = jsonArray[0]["totalsum"] {
jsonArray[0]["totalsum"] = "123"
}
答案 1 :(得分:0)
很难理解你要做什么,基本上没有涉及JSON(但是?)。如果将数组定义为
let: [[String : Any]] jsonArray = [["totalid":"1","totalsum":"0"]]
这句话
jsonArray[0]["totalsum"] = 123
将产生一个简单的
Cannot assign through subscript: 'jsonArray' is a 'let' constant
来自编译器。对于来自JavaScript的人来说有点奇怪,但Swift的默认数据结构是 immutable 。
很容易解决:
var jsonArray : [[String : Any]] = [["totalid":"1","totalsum":"0"]]
jsonArray[0]["totalsum"] = 123
如果相应地定义了var
iable,你可以指定你想要的任何东西。我猜测你想计算你的&#34; totalsum&#34;从你在数组中加载的任何东西,但你必须更清楚地表明你的意图,以确保。
作为一般建议,我会坚持使用Codable
协议来处理你实际要从JSON解析的东西,你的Swift代码将会更加混乱,你赢了# 39;不得不用演员和可选的解开来谜语。