所以除了令人困惑的语言(逻辑运算符不能使用两个布尔操作数,什么?),这是令人沮丧的,因为我的代码在我的项目中的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
}
Run Code Online (Sandbox Code Playgroud)
返回语句中出现错误.再次,在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]
}
Run Code Online (Sandbox Code Playgroud)