检索 tableview Swift 领域的 List 属性计数

2024-02-29

我正在使用 Realm 3 和 Swift 4,但对 Realm 和 Swift 还很陌生。这里需要指导:)

给定这个领域模型

class Person: Object, Mappable {
    let dog = List<Dog>()

    required convenience init?(map: Map) {
        self.init()
    }
}

如何获取每个人养狗的数量?

我想要实现的是我的表格视图上有多个部分,并且对于每个人都会有相应人的狗列表。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    let owner = realm.objects(Person.self)
    return owner.dog.count // This is not working. What should I change it to ?
}

我一直在网上搜索,但找不到有关此类问题的任何指南。

非常感谢所提供的任何帮助。谢谢!


我可能会将 var 狗重命名为 var 狗,以表明它可能包含不止一只狗。

这是一个简单的解决方案,可以打印主人的姓名和狗的数量。

do {
    let realm = try Realm()
    let people = realm.objects(Person.self)

    for person in people {
        let name = person.personName
        print(name)

        let dogs = person.dogs
        print(dogs.count)
    }

} catch let error as NSError {
    print(error.localizedDescription)
}

领域列表具有数组功能,因此可以对其进行迭代,可以使用计数,也可以进行过滤。

以及你问题中的代码

let owners = realm.objects(Person.self)

会将 Realm 中的所有 Person 对象分配给所有者 var (Person 数组),因此它不是一个人,而是所有人,这就是为什么它没有 .dog 属性。

您将需要建立whichperson 应该位于 tableView 的每个部分中,查询该 person 的 Realm,然后返回 person.dogs.count。

原始问题中未显示用于确定如何确定哪个人进入哪个部分的代码,但让我们假设您希望第 0 部分中的人员 0 (可能存在排序问题,因此这只是概念性的)

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let owners = realm.objects(Person.self).sorted('name')
    let thisOwner = owners[section]
    let dogCount = thisOwner.dogs.count
    return dogCount
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检索 tableview Swift 领域的 List 属性计数 的相关文章

随机推荐