Как передать значение в словаре

-2

Как передать значение в словаре.

Модель: -

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
        }






    }

моя модель просмотра: -

   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 my cartdatasource: -

let jsonArray = [["totalid": "1", "totalsum": "0"]] как массив>

Здесь totalSum = 0

Но мне нужно передать 123 в totalalsum key.Means мне нужно получить totalsum = 123 Как пройти. Так как установить это значение в cartresultview.means: -self.totalresult.text =?

  • 0
    Вы получите лучшие ответы, если добавите тег для языка программирования.
Теги:

2 ответа

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 неизменна.

Достаточно легко решить:

var jsonArray : [[String : Any]] = [["totalid":"1","totalsum":"0"]]
jsonArray[0]["totalsum"] = 123

вы можете назначить все, что хотите, для var iable, если оно определено соответствующим образом. Я думаю, вы хотели бы вычислить свой "totalsum" из того, что вы загружаете в массив, но вам нужно было бы четко показать свои намерения, чтобы быть уверенным.

В качестве общего совета я хотел бы придерживаться протокола Codable для вещей, которые вы на самом деле хотите проанализировать из JSON, ваш код Swift будет намного менее беспорядочным, и вам не придется загадывать его с помощью бросков и необязательных разворачиваний.

0

вы можете сделать это вот так:

jsonArray[0]["totalsum"] = "123"

его лучше вставить, если позволить игнорировать ничтожный крах

 if let _ = jsonArray[0]["totalsum"]  {
       jsonArray[0]["totalsum"] = "123"
      }
  • 0
    как можно дать в соответствии с моим кодом. и где я должен был дать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню