Я искал ответ на этот вопрос (я уверен, что он где-то есть), но не могу его найти.
Я пытаюсь заполнить заголовки разделов UITableView из базы данных Realm, где заголовок раздела находится в связанном классе.
Классы My Realm:
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 является динамическим c для каждого пользователя.
Мой текущий код, который вообще не работает:
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)
}
Это возвращает [«Имя группы 1», «Имя группы 2»] дважды (независимо от того, сколько объектов содержится в результатах). Почему дважды, и теперь, как мне получить их в заголовки моего раздела? Я пробовал:
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> [String] {
return getGroupNames()
}
Количество разделов работает, но заголовки не отображаются.