Ios 如何在字典中传递值

Ios 如何在字典中传递值,ios,swift,Ios,Swift,如何在字典中传递值 型号:- class cartresultModel: NSObject { var totalsum:String! var totalid:String! init?(dictionary:JSONDictionary) { guard let totalsum = dictionary["totalsum"] as? String, let totalid = dictionary["totalid"] as? S

如何在字典中传递值

型号:-

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 )
    }

}
数据源模型:-

 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
        }






    }
我已从其他viewcontroller发送self.no中的总价(这是cartresultviewmodel中的)

假设
输出为[“[123]”

从这个输出中,我需要取值123。作为我的cartdatasource:-

让jsonArray=[[“totalid”:“1”,“totalsum”:“0”]]作为数组>

这里totalSum=0

但我需要在totalsum键中传递123,这意味着我需要得到totalsum=123
如何传递。那么如何在cartresultview中设置此值。意味着:-self.totalresult.text=?

您可以像这样做

jsonArray[0]["totalsum"] = "123"
如果忽略零崩溃,最好输入if let

 if let _ = jsonArray[0]["totalsum"]  {
       jsonArray[0]["totalsum"] = "123"
      }

很难理解您要做什么,而且基本上没有涉及JSON(还没有?)。如果将数组定义为

let: [[String : Any]]  jsonArray = [["totalid":"1","totalsum":"0"]]
此声明

jsonArray[0]["totalsum"] = 123
将产生一个简单的

Cannot assign through subscript: 'jsonArray' is a 'let' constant
从编译器。对于来自JavaScript的人来说有点奇怪,但是Swift的默认数据结构是不可变的

很容易解决:

var jsonArray : [[String : Any]] = [["totalid":"1","totalsum":"0"]]
jsonArray[0]["totalsum"] = 123
如果相应地定义了
var
iable,则可以将任何需要的内容分配给它。我猜您可能希望从数组中加载的任何内容计算“totalsum”,但您必须更清楚地显示您的意图才能确定


作为一条一般性建议,对于您实际想要从JSON解析的内容,我将坚持使用
Codable
协议,您的Swift代码将不会太凌乱,您也不必用强制转换和可选的展开来迷惑它。

如果您为编程语言添加了一个标记,您会得到更好的答案。如何根据我的代码给出。我需要在哪里给出。
Cannot assign through subscript: 'jsonArray' is a 'let' constant
var jsonArray : [[String : Any]] = [["totalid":"1","totalsum":"0"]]
jsonArray[0]["totalsum"] = 123