我有一个 api ex:-
{data:[{name:a,location:{city:h}},{}],a:{},b:{}}
这是模式.我正在开发这种mvvm
方法。
所以我为此创建了一个模型
我给出的是:-
var city:string!
var name:string!
我需要从中获取值.
前任:
init?(dictionary :JSONDictionary) {
guard let name = dictionary["name"] as? String,
let description = dictionary["description"] as? String else {
return
}
self.name = name
self.description = description
}
下面是一个示例。 那么如何使用 swift 获取模型中的值
示例示例:- 宿舍模型
class hostelmodel{
var name :String!
var description :String!
init?(dictionary :JSONDictionary) {
guard let name = dictionary["name"] as? String,
let description = dictionary["description"] as? String else {
return
}
self.name = name
self.description = description
}
}
在酒店景观模型:-
class hostelviewmodel:NSObject{
var datasourceModel:DataSourceModel
init(withdatasource newDatasourceModel:DataSourceModel) {
datasourceModel = newDatasourceModel
}
func datafordisplay(atindex index: Int) -> hostelmodel {
return datasourceModel.dataListArray![index]
}
}
在数据源模型中:-
class DataSourceModel: NSObject {
var dataListArray:Array<hostelmodel>? = []
init?(array :Array<[String:Any]>) {
var datalist:Array<hostelmodel> = []
for dict in array{
let model = hostelmodel(dictionary: dict)
datalist.append(model!)
}
self.dataListArray = datalist
}
}
在宿舍景观:-
private var HOSTELMODEL :hostelmodel!
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?, withViewModel viewModel:hostelviewmodel) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
HOSTELMODEL = viewModel
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
我不知道应该在表视图数据源中给出什么。这里。。。
最后是网络服务类:-
私有变量网址= 网址(字符串:"https://example.com"(!typealias JSONDictionary = [String:Any]
class WebService{
func loadFlowers(completion :@escaping ([hostelmoddel]) -> ()) {
URLSession.shared.dataTask(with: url) { data, _, _ in
if let data = data {
let json = try! JSONSerialization.jsonObject(with: data, options: [])
let dictionaries = json as! [JSONDictionary]
let model = DataSourceModel(array: <#T##Array<[String : Any]>#>)
DispatchQueue.main.async {
completion(dictionaries.flatMap(hostelmodel.init))
}
}
}.resume()
}
}
此代码未完全完成。所以这就是模式.那么如何获取值并在表格视图中显示值。它必须在 mvvm 方法中,并且不应使用情节提要。怎么办 .
如果你可以迭代"data"数组中的值,那么你正在寻找的类结构是这样的:
class ModelName {
var name: String?
var city: String?
init(_ dictionary: Dictionary<String, Any>) {
if let name = dictionary["name"] as? String, let location = dictionary["location"] as? [String: Any], let city = location["city"] as? String {
self.name = name
self.city = city
}
}
}
class BusinesLogic {
var dataList: [ModelName]?
func getList() -> [ModelName]? {
return dataList
}
func initializeData(_ rawDataArray: [[String : Any]]) {
rawDataArray.forEach { rawData in
dataList?.append(ModelName.init(rawData))
}
}
}
// so to use:
let sample = BusinesLogic()
sample.initializeData([DATA ARRAY HERE])
sample.getList()