【发布时间】:2019-03-20 23:04:16
【问题描述】:
我已经使用 MVC 模式开发了自己的项目,并试图转换为 MVVM 模式,但有时我认为它变得越来越糟糕和毫无意义。
这是我的代码的一部分。我有控制器、模型和一个视图模型,如下所示:
struct FAQ: Mappable {
var id: String?
var question: String?
var answer: String?
var datalist: [FAQ]?
//var datalist: [Any]?
mutating func mapping(map: Map) {
id <- map["id"]
question <- map["question"]
answer <- map["answer"]
datalist <- map["data"]
}
}
class learningViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var faqLable: UILabel!
@IBOutlet weak var learningLable: UILabel!
@IBOutlet weak var uiviewHeader: UIView!
@IBOutlet weak var barRight: UILabel!
@IBOutlet weak var barLeft: UILabel!
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var backImage: UIImageView!
var learningRequestSession: URLSessionDataTask?
let address = Domains.address
var objectData = faqViewModel()
override func viewDidLoad() {
super.viewDidLoad()
objectData.faqFunc {
self.setup()
}
setup()
}
override func viewWillAppear(_ animated: Bool) {
tableView.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return objectData.objectData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "faqCell", for: indexPath) as! customViewCellTableViewCell
//cell.faqIcon.image = UIImage(named: "question")
cell.faqTitle.text = objectData.objectData[indexPath.row].question
cell.faqBody.text = objectData.objectData[indexPath.row].answer
return cell
}
...
}
这是视图模型类:
class faqViewModel {
var objectData = [FAQ]()
init(faq: [FAQ]) {
self.objectData = faq
}
init() {}
func faqFunc(complition: @escaping () -> () ) {
let url = URL(string: "\(address)faq/getdata")
print(url!)
URLSession.shared.dataTask(with: url!) { (data, response, err) in
if let content = data {
do {
let json = try! JSONSerialization.jsonObject(with: content, options: .mutableContainers) as Any
let mapper = Mapper<FAQ>().map(JSONObject: json)
self.objectData = (mapper?.datalist.map({ $0}))!
} catch {
print(err)
}
}
}.resume()
}
}
faqFunc 函数曾经在 MVC 模式的控制器类中。
我已将其移至此模式中的视图模型。所以我觉得我做错了或者 MVC 更好......!
【问题讨论】:
-
什么是“无麻疹”?
-
我的错误。无意义
标签: swift xcode model-view-controller mvvm