【问题标题】:Retrieve the List property count of realm for tableview Swift检索 tableview Swift 的领域列表属性计数
【发布时间】:2017-12-05 11:47:49
【问题描述】:

我正在使用 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 ?
}

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

我们非常感谢您提供的任何帮助。谢谢!

【问题讨论】:

    标签: ios uitableview realm


    【解决方案1】:

    我可能会将 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
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过查询逻辑。

      realm.objects(Person).filter("dogs.@count > 0")
      

      realm.objects(Person).filter("ANY dogs.@count > 0")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 2017-09-29
        • 1970-01-01
        相关资源
        最近更新 更多