Я разработал свой собственный проект с шаблоном 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 был лучше ...!