【问题标题】:Empty mutable property with non optional value具有非可选值的空可变属性
【发布时间】:2016-06-19 18:13:46
【问题描述】:

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

例如这是可行的:

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
}

谢谢帮助。

【问题讨论】:

  • 什么是Distributions
  • 这是我的价值对象
  • 显示它的代码?
  • 问题已更新...
  • 也许只使用 MutableProperty(nil)

标签: swift swift2 reactive-cocoa


【解决方案1】:

我可以想到两种方法可以做到这一点。一,在你的信号生产者上使用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)

【讨论】:

  • 对于那些在 2017 年 5 月查看的用户,ignoreNil() 现在是 skipNil()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
相关资源
最近更新 更多