Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我遵循MVC并通过RealmSwift持久化数据,swift模型类会是什么样子?_Swift_Model View Controller_Design Patterns_Realm - Fatal编程技术网

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

如果我遵循MVC并通过RealmSwift持久化数据,swift模型类会是什么样子?,swift,model-view-controller,design-patterns,realm,Swift,Model View Controller,Design Patterns,Realm,我是Swift的新手,我正在开发一个只用于练习的待办应用程序。在这个应用程序中,数据是使用RealmSwift持久化的,我试图遵循MVC设计模式。然而,我得到一个建议,类模型缺乏逻辑,需要调整。请给我一些建议,以改善我的代码。 在我的主Viewcontroller中,我创建了这些变量来持久化数据 let realm = try! Realm() var itemList : Results<Item>! 以下是我的数据模型: import Foundation import Re

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

let realm = try! Realm()

var itemList : Results<Item>!
以下是我的数据模型:

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中的模型应该包含数据类和所有操作数据的方法,但我不知道如何重新构造代码。这是我的全部代码


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

这是一个非常有趣的问题

基本上,模型应该只包含属性 因此,它只能用作“存储”

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

但请不要像某些教程那样将其放在ViewController中。这是一种非常糟糕的做法,应该避免保持体系结构干净(如果MVC是干净的(只是一个玩笑))。创建一个新类,如ItemManager,它将处理模型

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

  • “控制器”(业务逻辑)在需要获取/删除/编辑/创建新模型时调用ItemManager
  • ItemManager使用领域(CoreData/SQL/REST/…)执行查询(或其他事情),并将项目返回给“控制器”

  • 这种方法将引导您使用更干净的代码和其他一些体系结构(如果需要)

    这是一个非常有趣的问题

    基本上,模型应该只包含属性 因此,它只能用作“存储”

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

    但请不要像某些教程那样将其放在ViewController中。这是一种非常糟糕的做法,应该避免保持体系结构干净(如果MVC是干净的(只是一个玩笑))。创建一个新类,如ItemManager,它将处理模型

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

  • “控制器”(业务逻辑)在需要获取/删除/编辑/创建新模型时调用ItemManager
  • ItemManager使用领域(CoreData/SQL/REST/…)执行查询(或其他事情),并将项目返回给“控制器”

  • 这种方法将引导您使用更干净的代码和一些其他体系结构(如果您需要)

    您所说的
    是什么意思类模型缺乏逻辑
    ?模型类不应该只包含变量和init吗?我想它应该包含像save方法或delete方法这样的操作数据的方法。不,它不应该,这应该是任何其他组件的工作,无论是viewController、viewModel、realmanager等等,。。。取决于你的应用程序结构,你所做的对我来说似乎很好。我想我明白你的问题了!!。您必须首先创建一个控制器类来管理您的业务逻辑,并包含所有与模型相关的数据,然后您将从那里获取数据,到您的ViewController,您的VC将只有视图逻辑,同样对于处理领域,您应该像Tj3n所说的那样为viewcontroller创建一个realmManager,它将处理所有与领域相关的任务。您所说的
    是什么意思类模型缺乏逻辑
    ?模型类不应该只包含变量和init吗?我想它应该包含像save方法或delete方法这样的操作数据的方法。不,它不应该,这应该是任何其他组件的工作,无论是viewController、viewModel、realmanager等等,。。。取决于你的应用程序结构,你所做的对我来说似乎很好。我想我明白你的问题了!!。您必须首先创建一个控制器类来管理您的业务逻辑,并包含所有与模型相关的数据,然后您将从那里获取数据,到您的ViewController,您的VC将只有视图逻辑,同样对于处理领域,您应该像Tj3n所说的那样为viewcontroller创建一个realmManager,它将处理所有与领域相关的任务。谢谢您的回答。我只是在youtube上逛了逛,找到了一个与你的答案类似的教程。例如,我想我应该创建一个名为realmanager的类,并将所有的操纵数据方法放在该类中。谢谢你的帮助:)@TrungLe欢迎你!谢谢你的回答。我只是在youtube上逛了逛,找到了一个与你的答案类似的教程。例如,我想我应该创建一个名为realmanager的类,并将所有的操纵数据方法放在该类中。谢谢你的帮助:)@TrungLe欢迎你!
    
    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
            }
    
    
    }