swift - 具有非可选值的空可变属性

标签 swift swift2 reactive-cocoa

我可以创建具有非可选值的空可变属性(或其他类型的属性)吗?

例如这是可行的:

let distributions = MutableProperty<Distributions?>(nil)

但我需要这样的东西:

let distributions = MutableProperty<Distributions>()

分发对象:

struct Distributions : CollectionType{

    typealias Index = Int

    private let distributions : [Distribution]

    init(distributions : [Distribution]){
        self.distributions = distributions
    }

    var startIndex: Int {
        return 0
    }

    var endIndex: Int {
        return distributions.count
    }

    subscript(i: Int) -> Distribution {
        return distributions[i]
    }

}

struct Distribution{
    let id : Int
    let dateStart : String
    let dateEnd : String
}

谢谢帮助。

最佳答案

我可以想到两种方法来做到这一点。第一,在信号生成器上使用 ignoreNil

let distributions = MutableProperty<Distributions?>(nil)

distributions.producer
    .ignoreNil()
    .startWithNext { distributions in
        // distributions is of type [Distribution]
    }

二、将MutableProperty的初始值设置为一个空的Distributions对象。

let distributions = MutableProperty<Distributions>(Distributions(distributions: []))

// You can skip the initial value if need be
distributions.producer.skip(1)

关于swift - 具有非可选值的空可变属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37910324/

相关文章:

ios - Webtrends-iOS SDK (3.0.14) 响应代码 500

ios - 快速使用 ReactiveCocoa

reactive-programming - 如何使用 ReactiveCocoa 对传入信号进行两级排序?

ios - self.view = mainView 与 self.view.addSubview(mainView) 关于角半径

ios - Swift - UIButton 没有固定在屏幕底部

ios - 计算 Firebase 数据库子项并显示

ios - 如何继续下一个viewController

swift - &/and &% 从 Swift 语言中移除了吗?

swift - 如果 ReactiveCocoa 4 中下一个信号没有发送,则在延迟后重试

ios - 当新行插入 tableView 时,我是否必须调用 begin/endUpdates 方法?