【问题标题】:How to access properties of an object returned from primary key query in Realm Swift如何访问从 Realm Swift 中的主键查询返回的对象的属性
【发布时间】: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。
  • 请分享您的模型类的声明。

标签: swift realm


【解决方案1】:

已解决:

函数中出错的行是:

let results = realm.object(ofType: Job.self, forPrimaryKey: "uuid)

应该是:

let results = realm.object(ofType: Job.self, forPrimaryKey: (segueLabel.text!))

segueLabel 保存“uuid”属性的实际值。我正在学习……慢慢来。

感谢所有回复的人!

【讨论】:

    【解决方案2】:

    请参考这个答案:

    https://stackoverflow.com/a/31006930/4525734

    这提供了如何使用 Realm 以及获取对象属性的清晰图片。

    另外,我参考了本教程以了解更多关于领域的信息并快速使用它。我希望它会有用。

    https://www.appcoda.com/realm-database-swift/

    【讨论】:

    • 据我所知,我的代码是正确的。我通过主键方法与使用谓词的过滤器获得结果。两者我都用过,结果一样,意思是返回“uuid”的属性值,但对象的其他属性值返回nil。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多