我不确定这是怎么回事。我正在尝试将测试数据保存到数据库中,但不会保存。它将数据保存在我设置的默认值“我的领域”中,但没有保存我要保存的任何数据,它们显示为空。这很奇怪。
这是我的保存代码:
let medHub: MedInfo!
medHub = MedInfo()
if let txtMedName = txtMedName.text {
medHub.medName = txtMedName
}
if let txtMedDose = txtMedDose.text {
medHub.medDose = txtMedDose
}
if let txtDoctorsName = txtDoctorsName.text {
medHub.doctorName = txtDoctorsName
}
if let txtRxDate = txtRxDate.text {
medHub.rxDate = txtRxDate
}
if let imageViewDisplay = imageViewDisplay.image {
if let nsDataImage = imageViewDisplay.jpegData(compressionQuality: 0.1) as NSData? {
medHub.imageNSDATA = nsDataImage
}
// Save Data To Realm
//MARK: Save Data
let medHub = MedInfo()
let realm = try? Realm()
try? realm?.write {
realm?.add(medHub)
}
print("Data Was Saved To Realm Database.")
}
这是我的领域类
class MedInfo: Object {
// Info To Be Stored
@objc dynamic var keyID = UUID().uuidString
@objc dynamic var medName: String = ""
@objc dynamic var medDose: String = ""
@objc dynamic var currentDate: Date = Date()
@objc dynamic var timeTook: Date = Date()
@objc dynamic var lastTook: Date = Date()
@objc dynamic var durationOfTime: Date = Date()
@objc dynamic var doctorName: String = ""
@objc dynamic var rxDate: String = ""
@objc dynamic var medInfo: String = ""
@objc dynamic var linkPicture: String = ""
@objc dynamic var imageNSDATA: NSData?
@objc dynamic var isGood: Bool = false
@objc dynamic var extraDate: Date = Date()
@objc dynamic var extraString: String = ""
@objc dynamic var extraBool: Bool = false
override static func primaryKey() -> String? {
return "keyID"
}
}
在填写所有文本字段后,我调用该函数来保存数据。然后,我打开我的Real Database并观看它的数据保存,它将所有默认动态var保存在我的Realm类MedInfo中,但是它不会记录我的文本字段中的任何数据。我提供了数据库的屏幕截图。另外,在“我要保存的TextFileds”中键入“视图”的屏幕截图。
这是我正在填写的“我的视图”的屏幕截图,它没有保存我在“文本字段”中输入的任何内容。
任何对我做错事的帮助都会很棒。我是这一切的新手,所以我只是在这里学习。如您在“数据库屏幕截图”中所见,我尝试将数据保存为“三倍不走运”。
答案 0 :(得分:0)
因为您保存了空对象
let medHub = MedInfo()
let realm = try? Realm()
try? realm?.write {
realm?.add(medHub)
}
让medHub = MedInfo()创建一个具有空值/默认值的新对象
答案 1 :(得分:0)
您正在从MedInfo创建两个实例,第一个实例是从textfelid填充它的,第二个实例是在将其保存为默认值之前将其保存在领域之前创建的,因为您遇到了这个问题,首先应该像在代码中向我们展示的那样填充您的实例,然后将其作为外围发送以保存方法而无需创建新实例:
let medHub: MedInfo!
medHub = MedInfo()
if let txtMedName = txtMedName.text {
medHub.medName = txtMedName
}
if let txtMedDose = txtMedDose.text {
medHub.medDose = txtMedDose
}
if let txtDoctorsName = txtDoctorsName.text {
medHub.doctorName = txtDoctorsName
}
if let txtRxDate = txtRxDate.text {
medHub.rxDate = txtRxDate
}
if let imageViewDisplay = imageViewDisplay.image {
if let nsDataImage = imageViewDisplay.jpegData(compressionQuality: 0.1) as NSData? {
medHub.imageNSDATA = nsDataImage
}
}
saveRealmObject(medHub)
这是可用于保存对象的保存方法
// Save Data To Realm
//MARK: Save Data
func saveRealmObject(medHub:MedInfo) {
let realm = try? Realm()
try? realm?.write {
realm?.add(medHub)
}
print("Data Was Saved To Realm Database.")
}