首页 文章

如何访问Realm Swift中从主键查询返回的对象的属性

提问于
浏览
0

这是我的代码:

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,但其他属性(结果?.name,results?.address,results?.phone)返回nil . 这些属性用于填充tableview单元格中的标签 .

任何建议表示赞赏 .

稍微纠正:我实际上是在点击一个tableview单元格并进入另一个视图 . 然后我调用jobSelected函数,我试图将获得的结果值放入UIView中的常规标签中 . 我无法想象这很重要因为我在segue中传递的所有内容都是来自单元格标签的实际uuid字符串 .

以下是我的模型类的内容:import Foundation import 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 = ""
}

}

2 回答

  • 0

    解决了:

    函数中错误的行是:

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

    它应该是:

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

    segueLabel保存“uuid”属性的实际值 . 我正在慢慢地学习 .

    感谢所有回复的人!

  • 1

    请参考这个答案:

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

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

    另外,我参考了本教程,以了解有关领域的更多信息并将其与swift一起使用 . 我希望它会有用 .

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

相关问题