当前位置:  开发笔记 > IOS > 正文

Swift 2.1错误"二进制运算符||不能应用于两个Bool操作数"

如何解决《Swift2.1错误"二进制运算符||不能应用于两个Bool操作数"》经验,为你挑选了1个好方法。

所以除了令人困惑的语言(逻辑运算符不能使用两个布尔操作数,什么?),这是令人沮丧的,因为我的代码在我的项目中的Playground中运行,但是当我将完全相同的函数复制到控制器中时我得到了引用的错误.

如果有更好的方法,我的目标是对一组对象进行排序.对象包括一个时间组件,我想对此进行排序.时间存储为格式为"mm:ss"的字符串,因为这些不是在给定日期时间发生的离散事件,而是发生的重复事件(例如)"每周二17:45-18: 30" .

代码感觉相当简单:

func sortStringAsTime(first:String, second:String){
     let firstSet = first.componentsSeparatedByString(":")
     let secondSet = second.componentsSeparatedByString(":")

     return firstSet[0] < secondSet[0] ||   // Sort by hour
            firstSet[0] == secondSet[0] &&  // hours are the same
            firstSet[1] < secondSet[1]      // sort by minutes
}

返回语句中出现错误.再次,在Playground中按预期工作,但在将其复制/粘贴到我的控制器代码时给出了错误.



1> Paul..:

嗯,该死的.所以这很有趣.我想到了.给出的错误是垃圾和无用的,但真正的问题是我的函数没有声明返回类型.不确定为什么Playground没有抱怨,我不确定该错误信息应该如何给我这种洞察力.在我尝试返回true并继续让我的其他代码调用排序以便移动之后我注意到了它.

修正如下:

func sortStringAsTime(first:String, second:String) -> Bool {
        let firstSet = first.componentsSeparatedByString(":")
        let secondSet = second.componentsSeparatedByString(":")

        return firstSet[0] < secondSet[0] || // Sort by hour
            firstSet[0] == secondSet[0] &&  // hours are the same
            firstSet[1] < secondSet[1]
    }


是的,Swift编译器错误可能很神秘,但是你做了正确的事:*简化代码直到问题变得明显.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有