首页 > 解决方案 > 从领域查询中设置表部分标题

问题描述

我已经搜索过这个问题的答案(我确定它在某个地方)但找不到。

我正在尝试从领域数据库中填充 UITableView 的部分标题,其中部分标题位于相关类中。

我的领域课程:

class Person: Object {
    @objc dynamic var personId = UUID().uuidString
    @objc dynamic var firstName: String = ""
    @objc dynamic var surname: String = ""
    @objc dynamic var mobileNumber: Int = 0
    @objc dynamic var password: String = ""

    override static func primaryKey() -> String? {
        return "personId"
    }
}

class Group: Object {
    @objc dynamic var groupId = UUID().uuidString
    @objc dynamic var person: Person?
    @objc dynamic var groupName: String = ""
    let groupContent = List<String>()

    override static func primaryKey() -> String? {
        return "groupId"
    }
}

我想检索当前用户的 groupName 结果并将它们用作表节标题。groupNames 的数量对于每个用户都是动态的。

我当前的代码根本不起作用:

func getGroupNames() {
    let mobileNumber = UserDefaults.standard.integer(forKey: "mobileNumber")
    let personResult = realm.objects(Person.self).filter("mobileNumber == %@", mobileNumber)
    let groupNames = realm.objects(Group.self).filter("person == %@", personResult.self.first)
    return (groupNames)
}

我无法让 groupNames 用作节标题。

帮助将不胜感激!

谢谢。

更新

我现在有:

func getGroupNames() -> [String] {
    let mobileNumberInt = mobileNumber
    let groupNames = realm.objects(Group.self).filter("person.mobileNumber == %@", mobileNumberInt).map({$0.groupName})
    return Array(groupNames)
}

这将返回 ["Group Name 1", "Group Name 2"] 两次(无论结果中有多少对象)。为什么两次,现在我如何将这些放入我的部分标题中?我试过了:

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> [String] {
    return getGroupNames()
}

部分的数量有效,但标题未显示。

标签: iosrealmxcode11swift5

解决方案


假设您已经知道一个人的手机号码,您可以使用以下代码获取一个人所属的组。

func getGroupNames() -> [Group]?  {
    let realm = try Realm()
    let mobileNumber = UserDefaults.standard.integer(forKey: "mobileNumber")
    let groupNames = realm.objects(Group.self).filter("person.mobileNumber == %@", mobileNumber)
    return Array(groupNames)
}

推荐阅读