RealmSwift获取每个T对象

时间:2017-08-22 13:13:39

标签: ios realm rxdatasources

我有对象列表T,我想计算它们的总和(T个对象)

var objects: Observable<List<T>>

T对象有一个返回Int值的方法。 获取每个对象并准备值数组(flatMap函数)的主要思路。下一步将是reduce func,其值为Int

let sum = values.reduce(0) { $0 + $1 }

问:如何获取每个T对象?

1 个答案:

答案 0 :(得分:0)

看看下面的解决方案,它试图演示你想要做什么,你可能需要一个类型为T的协议,它具有int属性,如下例所示。你可以在游乐场试试。

protocol Countable {

    var value: Int { get }
    init(value: Int)
}


class User: Countable {

    var value: Int = 0

    required convenience init(value: Int) {
        self.init()
        self.value = value
    }
}


class UserGroup<T: Countable> {

    func calculateTotal() {
        let users: [T] = [T(value: 2), T(value: 21)]
        let total = users.flatMap { ($0 as Countable).value }.reduce(0) { $0 + $1 }
        print("total", total)
    }
}

let userGroup = UserGroup<User>()
userGroup.calculateTotal()