【问题标题】:Type 'Int' does not conform to protocol 'BooleanType'?类型“Int”不符合协议“BooleanType”?
【发布时间】:2016-04-20 04:52:14
【问题描述】:

我知道另一个帖子有同样的问题,但它并没有说明问题的真正原因

我是 swift 新手,所以对此我有点困惑。 我编写了一个非常简单的程序,该程序应该以默认数量的追随者(0)开始并将其分配给'defaultfollowers',一旦变为1,它就应该成为“追随者”,但我收到错误“类型'Int'确实不符合协议'BooleanType'”。造成这种情况的原因以及为什么

    var followerdeafault = 0
var followers = 0
if (followerdeafault++){
 var followers = followerdeafault

}

【问题讨论】:

  • followerdeafault++ 返回一个 Int。 if 采用布尔值。这些不匹配。
  • 您没有正确比较值。阅读Comparison Operators
  • 这正是 ++ 被弃用的原因。 if 条件下的可怕副作用。

标签: swift


【解决方案1】:

在 Swift 中,你不能隐式地用 Int 代替 Bool。这样做是为了防止混淆并使代码更具可读性。

所以不是这个

let x = 10
if x { /* do something */ }

你必须这样写:

let x = 10
if x != 0 { /* do something */ }

您也不能像在 Objective-C 中那样通过 Optional 而不是 Bool 来检查它是否为 nil。改为使用显式比较:

if myObject != nil { /* do something */ }

【讨论】:

    【解决方案2】:

    正如 cmets 所说,您正在尝试在 Bool 比较语句中使用 Int。您正在寻找的可能是这样的:

    if followerdeafuaut++ == 1 { ... }
    

    另附注:++ 运算符已弃用,转而使用 +=

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      相关资源
      最近更新 更多