2017-11-27 13 views
0

문제가 있습니다. 원하는대로 참조 값을 인쇄하기 위해 설명 메서드를 재정의하려고합니다. 이 메서드는 Java toString() 메서드와 같습니다 (스위프트에 익숙하지 않습니다).swift4 영역 모델 - 오버라이드 설명 (java toString() equivalent)

문제는 작동하지 않으며 그 해결책이 없다는 것입니다. 나는 그것을 예제에서와 똑같이했다. 내가 뭘 잘못 했는가?

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 
} 

그것은 콘솔에 출력 (I 스미스가 잘못 인쇄보다 이전 경우 더 많은 코드를 게시) : 그 인쇄하려고 할 때마다, 지금

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 
    } 

: 여기

내 코드입니다 그 : (두 경우 모두 동일)

Results<Patient> <0x7fccaaf03b90> (
    [0] Patient { 
     referenceNumber = 231321; 
     firstName = James; 
     surname = Rodriguez; 
     email = [email protected]; 
    } 
) 

왜?

답변

0

개체의 String 설명 구현이 적합합니다. 올바른 Computed Property입니다. 따라서 Realm 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 체크 아웃 : 그래서, 예를 들어, 당신은 당신이 배열에 그것을 할 것으로 얻을 수 있습니다 첫 번째 요소에 대한 설명을 찾는 경우 .

+0

도움과 설명에 감사드립니다 - 그게 문제였습니다 :) –

1

배열을 인쇄하려고하기 때문에. 환자 [0]. 설명을보십시오 (환자는 아마도 최고의 이름이 아니며, 아마도 환자입니까?).