【问题标题】:Swift returns error 'Binary operator == cannot be applied to two EKSourceType operands'Swift 返回错误“二元运算符 == 不能应用于两个 EKSourceType 操作数”
【发布时间】:2015-04-22 14:21:46
【问题描述】:

我在 Xcode 6.3 中有这样的代码:

let store = EKEventStore()

for source in store.sources() {
    let st: EKSourceType = source.sourceType!
    if st == EKSourceTypeLocal {
        localSource = source;
    }
}

第五行(如果是 st..)给出编译器错误:'Binary operator == cannot be applied to two EKSourceType operands'

我如何检查源是否是本地的(在 Swift 中)并让它编译?

【问题讨论】:

  • 没有必要强制解包source.sourceType,它已经是一个隐式解包的可选项,所以如果它在没有帮助的情况下使用nil,你的代码会很好地崩溃:)

标签: ios swift ios8


【解决方案1】:

像这样:

if st.value == EKSourceTypeLocal.value

【讨论】:

    【解决方案2】:

    您不能直接将任何类或结构与静态值进行比较,因此您始终使用其值或需要类或结构的实例进行比较。

    所以你可以使用如下来比较

        for source in store.sources() {
        let st: EKSourceType = source.sourceType!
        if st == EKSourceTypeLocal.value {
            localSource = source;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多