将文本从UITextView保存到域时出现问题(Swift 5)

将文本从UITextView保存到域时出现问题(Swift 5),swift,xcode,save,realm,Swift,Xcode,Save,Realm,正在尝试将用户的textView.text保存到域中。我想如果我在textfielddidediting函数中调用save函数,它会触发我的领域数据库来保存它。函数运行正常(当我结束编辑时打印“保存成功”),但当我关闭并返回时,所有数据都不存在 import UIKit import RealmSwift class NoteViewController: UIViewController, UITextViewDelegate { var textView = UITextView

正在尝试将用户的textView.text保存到域中。我想如果我在textfielddidediting函数中调用save函数,它会触发我的领域数据库来保存它。函数运行正常(当我结束编辑时打印“保存成功”),但当我关闭并返回时,所有数据都不存在

import UIKit
import RealmSwift

class NoteViewController: UIViewController, UITextViewDelegate {

    var textView = UITextView()
    var notes: Results<Notes>?
    let realm = try! Realm()

    var selectedNote: Menu? {
        didSet {
           loadNotes()
        }
    }

    @IBOutlet weak var theTextView: UITextView!
    override func viewDidLoad() {
        super.viewDidLoad()

        loadNotes()

        self.textView.delegate = self

    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }

    override func viewDidDisappear(_ animated: Bool) {
        saveNote()
    }




    func textViewDidBeginEditing(_ textView: UITextView) {

    }

    func textViewDidEndEditing(_ textView: UITextView) {

     saveNote()
    }



   //MARK: - Data Manipulation

    func loadNotes() {
        notes = realm.objects(Notes.self)

        textView.reloadInputViews()


    }

    func saveNote() {
        if let currentNote = self.selectedNote {
                 do {
                     try self.realm.write {
                         let newNote = Notes()
                         newNote.body = theTextView.text!
                         newNote.dateCreated = Date()
                         currentNote.notes.append(newNote)
                        print("Saved successfully")
                     }
                 } catch {
                     print("Error saving note body, with \(error)")
                 }
             }


    }


}

Realm File: 

class Notes: Object {
    @objc dynamic var body: String = ""
    @objc dynamic var dateCreated: Date?
    var parent = LinkingObjects(fromType: Menu.self, property: "notes")

}

Menu Realm File:

class Menu: Object {
    @objc dynamic var name: String = ""
    @objc dynamic var preview: String = ""

    let notes = List<Notes>()

看起来您正在使用故事板创建布局

去掉
var textView=UITextView()
textView.reloadinputview()

将viewDidLoad()中的
theTextView.delegate=self
替换为
theTextView.delegate=self

要检查文本视图的内容,请修改打印语句:

print("Saved successfully: \(theTextView.text!)")
如果“Saved successfully:”之后没有打印文本,请检查Interface builder中的文本视图:验证文本视图的出口,并确认这实际上是您正在使用的UITextView(因为你的应用程序确实打印了一些东西,所以它看起来好像被某种方式连接起来了,否则它会在
newNote.body=theTextView.text!
中崩溃)

我想你也忘了用notes.body初始化文本视图。 尝试按如下方式修改loadNotes():

func loadNotes() {
    notes = realm.objects(Notes.self)

    theTextView.text = notes.body
}

看起来您正在使用故事板创建布局

去掉
var textView=UITextView()
textView.reloadinputview()

将viewDidLoad()中的
theTextView.delegate=self
替换为
theTextView.delegate=self

要检查文本视图的内容,请修改打印语句:

print("Saved successfully: \(theTextView.text!)")
如果“Saved successfully:”之后没有打印文本,请检查Interface builder中的文本视图:验证文本视图的出口,并确认这实际上是您正在使用的UITextView(因为你的应用程序确实打印了一些东西,所以它看起来好像被某种方式连接起来了,否则它会在
newNote.body=theTextView.text!
中崩溃)

我想你也忘了用notes.body初始化文本视图。 尝试按如下方式修改loadNotes():

func loadNotes() {
    notes = realm.objects(Notes.self)

    theTextView.text = notes.body
}

我有几个问题要问你。你的菜单对象是否已经由realm管理?或者它是否仍然需要保存到realm?你的NoteViewController是否用于编辑和创建便笺?尽可能多地发布代码。至少可以查看你的菜单类定义、你在textView中加载的内容以及你如何加载文本用文本查看。没有任何数据意味着什么?您是否使用Realm Studio并检查数据库是否实际保存了?而且,selectedNote似乎是一个菜单
var selectedNote:Menu?
是否正确?var设置在哪里?谢谢大家。刚刚将Menu类添加到上面的代码中。我在Stud中检查了ream文件io-它保存菜单数据和注释类的dateCreated很好,但不是注释的正文。这告诉我
TextView.text!
是一个空字符串。我有几个问题要问你。你的菜单对象是否已经由realm管理?还是仍然需要保存到realm?你的NoteView控制器是否可以编辑和创建正在加载便笺?尽可能多地发布代码。至少,查看菜单类定义、在textView中加载的内容以及如何加载文本视图会很有帮助。没有任何数据意味着什么?您是否使用Realm Studio并检查数据库以查看它是否实际保存了?此外,selectedNote似乎是一个Menu
var selectedNote:Menu?
正确吗?var设置在哪里?谢谢大家。刚刚在上面的代码中添加了Menu类。我确实在Studio中检查了域文件-它保存了菜单数据和note类的dateCreated,但是没有保存注释的正文。这告诉我
文本视图.text!
是一个空字符串。