代码之家  ›  专栏  ›  技术社区  ›  M. Wojcik

swift4领域模型-覆盖描述(java toString()等效)

  •  0
  • M. Wojcik  · 技术社区  · 8 年前

    我有个问题。我正在尝试重写描述方法以按需要打印参考值。我读到这相当于Java toString()方法(我是swift新手)

    问题是,它不起作用,我找不到任何解决方案。我完全按照示例中的方法来做。。我做错了什么?

    这是我的代码:

    import Foundation
    import RealmSwift
    
    @objcMembers class Patient: Object{
    
        //toString()
        override var description: String{
            return "Patient: Ref nr: \(self.referenceNumber), First name: \(self.firstName), Surname: \(self.surname) Email:  \(self.email)"
        }
    
        var patientId:Int{
            return self.patientId
        }
        dynamic var referenceNumber: String = ""
        dynamic var firstName:String = ""
        dynamic var surname:String = ""
        dynamic var email:String = ""
    
        convenience init(referenceNumber:String, firstName:String, surname:String, email:String) {
            self.init()
            self.referenceNumber = referenceNumber
            self.firstName = firstName
            self.surname = surname
            self.email = email
        }
    

    现在,每当我尝试打印时:(我发布了更多代码,以防史密斯的错误早于打印)

    var patient: Results<Patient>!
    
    override func viewDidLoad() {
        super.viewDidLoad();
    
        let realm = RealmService.shared.realm
        let patient = realm.objects(Patient.self) //tocheck: can I get only one element from Realm and set to store only 1 element?
    
        //HERE IT GOES WRONG
        print(patient) //case 1
        print(patient.description) //case 2
    }
    

    它在控制台中打印:(在两种情况下相同)

    Results<Patient> <0x7fccaaf03b90> (
        [0] Patient {
            referenceNumber = 231321;
            firstName = James;
            surname = Rodriguez;
            email = jr@lalalla.pl;
        }
    )
    

    为什么?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Kevinosaurio    8 年前

    因为您正在尝试打印数组。尝试患者[0]。描述(患者不是最好的名字,可能是患者?)。

        2
  •  0
  •   Orlando    8 年前

    对象中字符串描述的实现是正确的。这是一个正确的 Computed Property . 因此,领域 will ignore it 用于存储,但仍可供您使用。

    当你调用 let patient = realm.objects(Patient.self) 王国正在给你一个 Results<Patient> 对象可以将其视为一系列 Patient 物体。因此,例如,如果您要查找第一个元素的描述,可以像在数组中一样获取它:

    if let firstPatient = realm.objects(Patient.self).first {
        print(firstPatient.description)
    }
    

    有关此主题的非常好的参考资料,请查看 Realm docs for Results .