ios - 如何传递字典中的值
问题描述
如何传递字典中的值。
模型:-
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
}
}
我的视图模型:-
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
}
}
我的购物车显示结果视图:-
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
}
}
从其他视图控制器,我已经在 self.no 中发送了总价格金额(这是在 cartresultviewmodel 中)。
认为the output is ["[123]"]
从这个输出中,我需要取值 123 .AS 我的购物车数据源:-
让 jsonArray = [["totalid":"1","totalsum":"0"]] 作为数组>
这里总和 = 0
但我需要在总和键中传递 123。意味着我需要得到总和 = 123 如何传递。那么如何在 cartresultview.means:-self.totalresult.text = 中设置这个值?
解决方案
很难理解您要做什么,而且基本上不涉及 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。我猜你想从你加载到数组中的任何内容来计算你的“总和”,但你必须更清楚地表明你的意图才能确定。
作为一般建议,对于您真正Codable
想要从 JSON 解析的内容,我会坚持使用该协议,您的 Swift 代码将不会那么混乱,而且您不必用强制转换和可选的解包来处理它。
推荐阅读
- python - Python - CSV中行之间的层次关系
- visual-studio - 在 Visual Studio 2017 中查看源代码资源管理器
- getstream-io - GetStream IO - 创建类似提要的“发现”
- python - 有条件地将数据合并到现有的 pandas 数据框列中
- spring - Hibernate CriteriaQuery where - ManyToOne 字段
- javascript - 在异步 AJAX 回调中访问 DOM 元素返回未定义
- sql - Oracle 触发器:SELECT INTO,未找到数据
- python - 在熊猫中使用函数(或其他方式)更改列的正确方法
- angular - 如何使输入表单数据以 HTML 格式显示
- android - 使用 Android Turbolinks 框架,我如何缓解桥注入失败