我有以下格式的 json 数据:
{
"AvailToDate": "2016-12-31 00:00:00.0",
"CompanyName": "Google",
"ShowroomName": "Mobile Phones",
"OwnerUserId": "OID1544234",
"artyId": "APL026306123",
"Currency": "USD",
"roductCount": 10,
"AvailFromDate": "2016-12-20 00:00:00.0",
"MaxPrice": 10,
"MinPrice": 1,
"ShowroomId": 11904,
"AccessStatus": "Open"
}
我能够将上述对象数组转换为 Dictionary 对象数组。然后我将字典对象转换为核心数据实体。
这是我将 Dictionary 对象转换为 ManagedObject 的代码
let showroom = Showroom(context: bgContext)
showroom.availableFromDate = (tShowroom[kAvailFromDate] as? String)?.toDate()
showroom.minPrice = tShowroom[kMinPrice] as? Float
showroom.showroomID = tShowroom[kShowroomId] as! Int32
showroom.accessStatus = tShowroom[kAccessStatus] as? String
showroom.availableToDate = (tShowroom[kAvailToDate] as? String)?.toDate()
showroom.companyName = tShowroom[kCompanyName] as? String
showroom.showroomName = tShowroom[kShowroomName] as? String
showroom.ownerID = tShowroom[kOwnerUserId] as? String
showroom.partyID = tShowroom[kPartyId] as? String
showroom.currency = tShowroom[kCurrency] as? String
showroom.productsCount = tShowroom[kProductCount] as! Int32
showroom.maxPrice = tShowroom[kMaxPrice] as? Float
如果某些参数缺少JSON接收,我们如何解析对象。我是否必须将 ManagedObject 中的所有参数设置为可选?
我不想对每个参数都使用“if let”或“guard”。实现它的最佳方法是什么?
Best Answer-推荐答案 strong>
您可以简单地使用 ?? 语法为变量添加“默认值”
假设您想将最低价格设置为 10.2,如果 json 没有返回值,请这样做:
showroom.minPrice = tShowroom[kMinPrice] as? Float ?? 10.2
或者对于字符串:
showroom.accessStatus = tShowroom[kAccessStatus] as? String ?? "Default String"
关于ios - 在 swift 中将 JSON 转换为 ManagedObject 以获取可选参数,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/41313157/
|