gpt4 book ai didi

swift - 如果我遵循 MVC 并通过 RealmSwift 持久化数据,swift 模型类会是什么样子?

转载 作者:行者123 更新时间:2023-11-28 13:40:59 26 4
gpt4 key购买 nike

我是 Swift 的新手,我正在开发一个仅供练习的待办事项应用程序。在这个应用程序中,数据是使用 RealmSwift 持久化的,我尝试遵循 MVC 设计模式。但是,我得到的建议是类模型缺乏逻辑,需要调整。请给我一些建议来改进我的代码。在我的主 Viewcontroller 中,我创建了这些变量来持久化数据

let realm = try! Realm()

var itemList : Results<Item>!

在我的主视图 Controller 中也有一些方法来操作数据:

func save(item : Item) {
do {
try realm.write {
realm.add(item)
}
}

catch{
print("Error saving category, \(error)")
}

tableView.reloadData()
}

func loadItems() {

itemList = realm.objects(Item.self)

tableView.reloadData()

}

这是我的数据模型:

import Foundation
import RealmSwift

class Item : Object {
@objc dynamic var title : String = ""
@objc dynamic var done : Bool = false
@objc dynamic var note: String = ""
@objc dynamic var dateCreated : Date?

convenience init(title: String, note: String) {
self.init()
self.title = title
self.note = note
self.dateCreated = Date()
self.done = false
}


}

据我了解,MVC 中的模型应该包含数据类和所有操作数据的方法,但我不知道如何重构我的代码。这里全是我的代码 https://github.com/lequocgiom/Reminder/tree/master/Reminder2

感谢您的宝贵时间,如果有人能帮助我,我将不胜感激。

最佳答案

这是一个很有趣的问题

基本上模型应该只包含属性所以它只能作为“存储”

操作模型的方法应该放在代码的“ Controller ”部分

但是请不要像一些教程那样把它放在ViewController中。这是非常糟糕的做法,应该避免以保持架构清洁(如果 MVC 可以清洁(开个玩笑))。创建一个新类,如 ItemManager,它将处理模型。

因此您的逻辑将如下所示:

  1. “ Controller ”(业务逻辑)在他想要获取/删除/编辑/创建新模型时调用 ItemManager
  2. ItemManager 使用 Realm(CoreData/SQL/REST/...) 执行查询(或其他操作)并将项目返回给“Controller”

这种方法将使您获得更清晰的代码和一些其他架构(如果需要)

关于swift - 如果我遵循 MVC 并通过 RealmSwift 持久化数据,swift 模型类会是什么样子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56032772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com