将文本从UITextView保存到域时出现问题(Swift 5)
正在尝试将用户的textView.text保存到域中。我想如果我在textfielddidediting函数中调用save函数,它会触发我的领域数据库来保存它。函数运行正常(当我结束编辑时打印“保存成功”),但当我关闭并返回时,所有数据都不存在将文本从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
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似乎是一个Menuvar selectedNote:Menu?
正确吗?var设置在哪里?谢谢大家。刚刚在上面的代码中添加了Menu类。我确实在Studio中检查了域文件-它保存了菜单数据和note类的dateCreated,但是没有保存注释的正文。这告诉我文本视图.text!
是一个空字符串。