【发布时间】:2016-10-17 16:59:44
【问题描述】:
这是我的代码:
func jobSelected() {
let businessName = realm.objects(UserSettings.self).last
let results = realm.object(ofType: Job.self, forPrimaryKey: "uuid")
print(results)
businessNameLabel.text = "Bid From \(businessName!.businessName)"
jobNameLabel.text = "Job Name \(results?.name)"
jobAddressLabel.text = results?.address
jobPhoneLabel.text = results?.phone
}
该函数返回正确的 uuid,但其他属性(results?.name、results?.address、results?.phone)返回 nil。这些属性用于填充表格视图单元格中的标签。
欢迎提出任何建议。
稍微更正:我实际上是在单击一个表格视图单元格并进入另一个视图。然后我调用 jobSelected 函数,并尝试将获得的结果值放入 UIView 中的常规标签中。我无法想象这很重要,因为我在 segue 中传递的只是来自单元标签的实际 uuid 字符串。
这是我的模型类的内容: 进口基金会 导入 RealmSwift
class Job: Object {
dynamic var name = ""
dynamic var address = ""
dynamic var phone = ""
dynamic var email = ""
dynamic var date = ""
dynamic var jobName = ""
dynamic var tripChg = 0.0
dynamic var notes = ""
dynamic var discount = 0.0
dynamic var uuid = NSUUID().uuidString
var rooms = List<Room>()
override static func primaryKey() -> String {
return "uuid"
}
let room = LinkingObjects(fromType: Room.self, property: "job")
var thisJob: Room? {return room.first}
convenience init(uuid: NSUUID) {
self.init()
self.uuid = ""
}
}
【问题讨论】:
-
你的主键字面意思是字符串
uuid吗?如果您的结果为零,那可能是因为数据库中不存在具有该 UUID 的对象。 -
您是否确认该对象实际上具有为其他属性设置的值?
print(results)行中打印了什么?对于具有该主键的对象,领域浏览器会向您显示什么? -
是的,它们都有价值。我正在使用领域浏览器,它会在输入时显示所有值,并在保存它们时在控制台中打印属性。我在输入它们的屏幕上使用默认值,这样模型中的所有属性都不是零。打印结果行是“A4C5971F-AD49-437A-95BD-06FA94C8E9E3”,这是在 Realm Browser 中看到的 uuid。
-
请分享您的模型类的声明。