我很困惑。我需要比较产品日期代码。他们看起来像12-34-56。我写了一些代码来分解各个部分并进行比较。该代码可以在操场上正常工作。但是,当我在视图控制器中将其设置为函数时,出现NIL值,并且在打印到日志或在休息时查看时,会得到很多“ Optional(“ 12-34-56”)“值。我尝试过在许多地方拆包,但是什么也没做。不要被日期和月份变量弄糊涂,因为它们不是产品代码,根据所使用的生产机器,它们可以有90天90个月。

func compaireSerial(oldNumIn: NSString, newNumIn: String) -> Bool {
        // take the parts of the number and compare the pics on at a time.
        // Set up the old Num in chunks
        let oldNum = NSString(string: oldNumIn)
        let oldMonth = Int(oldNum.substringToIndex(2))
        let oldDay = Int(oldNum.substringWithRange(NSRange(location: 3, length: 2)))
        let oldYear = Int(oldNum.substringFromIndex(6))
        print(oldMonth,oldDay, oldYear)


        // Set up the new Num in chunks
        let newNum = NSString(string: newNumIn)
        let newMonth = Int(newNum.substringToIndex(2))
        let newDay = Int(newNum.substringWithRange(NSRange(location: 3, length: 2)))
        let newYear = Int(newNum.substringFromIndex(6))
        print(newMonth, newDay, newYear)

        // LETS Do the IF comparison steps.
        if oldYear < newYear {
            return true
        } else if oldMonth < newMonth {
            return true
        } else if oldDay < newDay {
            return true
        } else {
            return false
        }
    }


可能要感谢任何一个。我完全陷入了困境

最佳答案

所有具有Int()参数的String初始化程序始终返回可选的Int
“游乐场”中的“实时结果”列不指示可选项,但可以打印。

let twentyTwo = Int("22")  |  22
print(twentyTwo)           |  "Optional(22)\n"

关于swift - 为什么在函数中 swift 使用变量选项,而不是在操场上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35187959/

10-11 08:22