gpt4 book ai didi

ios - 检索 TableView Swift Realm 的列表属性计数

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:21:55 25 4
gpt4 key购买 nike

我正在使用 Realm 3 和 Swift 4,但对 Realm 和 Swift 还是个新手。在这里需要指导:)

给定这个 Realm 模型

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

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

如何获取每个人的狗数?

我想要实现的是在我的表格 View 中有多个部分,并且每个人都会有各自的狗列表。

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 dog 重命名为 var dogs,以表明它可能包含不止一只狗。

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

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)
}

Realm List 具有 Array 功能,因此可以对其进行迭代,计数可用,也可以进行过滤。

还有你问题中的代码

let owners = realm.objects(Person.self)

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

您需要确定哪个人应该出现在 tableView 的每个部分中,为该人查询 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
}

关于ios - 检索 TableView Swift Realm 的列表属性计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com