所以除了令人困惑的语言(逻辑运算符不能使用两个布尔操作数,什么?),这是令人沮丧的,因为我的代码在我的项目中的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中按预期工作,但在将其复制/粘贴到我的控制器代码时给出了错误.
嗯,该死的.所以这很有趣.我想到了.给出的错误是垃圾和无用的,但真正的问题是我的函数没有声明返回类型.不确定为什么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] }