Ios 使用Swift从字典数组创建对象数组
我从一个web服务接收到一个JSON字典,我需要将返回值映射到现有值。下面是我想做的:Ios 使用Swift从字典数组创建对象数组,ios,json,swift,Ios,Json,Swift,我从一个web服务接收到一个JSON字典,我需要将返回值映射到现有值。下面是我想做的: class Contract { var contractID: String? var ebState: String? var ibState: String? var importerState: String? var exportersBankRefNo: String? var importersBankRefNo: String? } let contract1 = Contract()
class Contract {
var contractID: String?
var ebState: String?
var ibState: String?
var importerState: String?
var exportersBankRefNo: String?
var importersBankRefNo: String?
}
let contract1 = Contract()
contract1.contractID = "001"
let contract2 = Contract()
contract2.contractID = "002"
// This is the JSON return dictionary
let exportAppnStatusList: [[String: String]] = [["contractID":"001",
"ExporterBankRefNo":"ExporterBankRefNo001",
"ExporterBankState":"ACCEPTED",
"ImporterBankRefNo":"",
"ImporterBankState":"UNKNOWN",
"ImporterState":"UNKNOWN" ],
["contractID":"002",
"ExporterBankRefNo":"ExporterBankRefNo002",
"ExporterBankState":"ACCEPTED",
"ImporterBankRefNo":"ImporterBankRefNo002",
"ImporterBankState":"ACCEPTED",
"ImporterState":"UNKNOWN" ]]
我需要获取exportAppnStatusList
并在现有的contract1
和contract2
中填写相关值,通过Contractd
映射,尝试使用此init(您的类必须从NSObject继承):
然后你可以这样做:
exportAppnStatusList.forEach {
print(Contract(jsonDict: $0))
}
这将使用可用信息填充合同,忽略找不到id的合同:
for contract in [contract1, contract2] {
if let contractDict = exportAppnStatusList.filter({$0["contractID"] == contract.contractID}).first {
contract.exportersBankRefNo = contractDict["ExporterBankRefNo"]
contract.ebState = contractDict["ExporterBankState"]
contract.importersBankRefNo = contractDict["ImporterBankRefNo"]
contract.ibState = contractDict["ImporterBankState"]
contract.importerState = contractDict["ImporterState"]
}
}
为什么不通过像这样映射字典数组来生成契约对象呢?您需要编写一个接受所有这些参数的自定义初始值设定项
exportAppnStatusList.map { (dict:[Stirng:String]) -> Contract in
return Contract(contractID:dict["contractID"],
ebState:dict["ExporterBankState"],
ibState:dict["ImporterBankState"],
importerState:dict["ImporterState"],
exportersBankRefNo:dict["ExporterBankRefNo"],
importersBankRefNo:dict["ImporterBankRefNo"]
}
我有一个现有的契约对象数组,需要JSON调用覆盖这些属性。问题是,我有一个现有的契约数组,我想循环并填充其值,而不是创建一个全新的数组。
exportAppnStatusList.map { (dict:[Stirng:String]) -> Contract in
return Contract(contractID:dict["contractID"],
ebState:dict["ExporterBankState"],
ibState:dict["ImporterBankState"],
importerState:dict["ImporterState"],
exportersBankRefNo:dict["ExporterBankRefNo"],
importersBankRefNo:dict["ImporterBankRefNo"]
}