Быстрое получение данных значения из протокола - PullRequest
0 голосов
/ 09 мая 2020

Мне нужна помощь с моим кодом для swift 5,

, поэтому я создаю структуру и протокол для хранения списка из uitextfield, и теперь я хочу показать эти данные в UiTextView в другом контроллере представления

struct PatientNote {

var note : String

init(note :String) {
    self.note = note
  }
}  

protocol AddNotesDelegate {

    func AddNotes(controller : UIViewController, notes: PatientNote)
}

class AddNotesController: UIViewController {

var delegate : AddNotesDelegate!

@IBOutlet weak var Notes: UITextView!

@IBAction func addNotes(_ sender: Any) {

    if let notes = self.Notes.text {

        let patientNote = PatientNote(note: notes)
        self.delegate.AddNotes(controller: self, notes: patientNote)
        print(patientNote.note)

    }
  }
}

и теперь я хочу показать в своем контроллере представления, но я получаю эту ошибку «Невозможно преобразовать значение типа« PatientNote »в ожидаемый тип аргумента« Строка »» в этом viewController

class NotePatientController: UIViewController, AddNotesDelegate{

func AddNotes(controller: UIViewController, notes: PatientNote) {

    let NotesPatient = PatientNote(note: notes) *this is where i get the error

}

var delegate : AddNotesDelegate!

var pasien : PatientNote!



override func viewDidLoad() {
    super.viewDidLoad()

    PatientTextView.text = pasien.note

}

@IBOutlet weak var PatientTextView: UITextView!


//in this ibaction i edit the notes that i get from the first Vc which is AddNotesController
@IBAction func Save(_ sender: UIButton) {

    if let notes = self.PatientTextView.text {
        let pasienNotes = PatientNote(note: notes)

        self.delegate.AddNotes(controller: self, notes: pasienNotes)
    } 
  }
}

я пытаюсь чтобы показать заметку из AddNotesController в NotePatientController, а в NotePatientController я могу редактировать и сохранять заметки в UiTextView.

, поэтому я знаю, что должен использовать протокол неправильно, может кто-нибудь мне помочь, как я должен его использовать? Я все еще новичок в Swift, так что, вероятно, мне понадобится любая помощь, которую я могу получить, Ура!

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Измените let notesPatient = PatientNote(note: notes) на let notesPatient = PatientNote(note: notes.note)

0 голосов
/ 09 мая 2020

Похоже, что PatientNote принимает String в качестве аргумента, но вместо этого вы передали ему уже созданное PatientNote. Приведенный ниже синтаксис с использованием notes.note был бы более чистым решением без инициализации нового PatientNote.

func AddNotes(controller: UIViewController, notes: PatientNote) {

    print(notes.note) // access the note String like this

}
...