Swift 从任何已发生的崩溃类型转换为字符串

Swift 从任何已发生的崩溃类型转换为字符串,swift,casting,objectmapper,Swift,Casting,Objectmapper,我有一个对对象MyDate数组进行排序的代码,它的值是从ObjectMapper设置的,值是从json获取的,如下所示: ... "since": "1536642141", ... 这些代码在Xcode 9.4.1中运行良好,但在Xcode 10中崩溃 tempDates = tempDates.sorted(by: { Int(String.init(describing: $0.since))! < Int(String.init(describing: $1.since))!

我有一个对对象MyDate数组进行排序的代码,它的值是从ObjectMapper设置的,值是从json获取的,如下所示:

... 
"since": "1536642141",
... 
这些代码在Xcode 9.4.1中运行良好,但在Xcode 10中崩溃

tempDates = tempDates.sorted(by: { Int(String.init(describing: $0.since))! < Int(String.init(describing: $1.since))!  })
tempDates=tempDates.sorted(按:{Int(String.init(description:$0.since))!
崩溃消息为“致命错误:在展开可选值时意外发现nil”
这是Xcode的错误吗?我怎样才能修好它

当使用随机字符串初始化时,Int返回nil可能有三个原因

  • 当字符串的位数大于32位/64位长度时
    设a=Int(String.init(描述:“153664214187878887878”)

  • 当字符串不包含任何数字时
    设a=Int(String.init(描述:“heyyowhynodigits”)

  • 当字符串包含其他数字字符时
    设a=Int(String.init(描述:“heyyowhynodigits”)

  • 这些理由对XCode 9.4.1和XCode 10都有效
    不过,在XCode 9.4.1上,64位长度的字符串可能在64位长度的设备/仿真器上进行了测试。

    但是,在XCode 10的情况下,测试是在32位设备/模拟器上进行的,使得案例1(上文)有效

    为什么
    是因为
    类型
    任何
    ?为什么不将其设置为
    字符串
    ?当您在一行中遇到运行时错误时,它强烈地依赖于代码的其他部分。请尽量显示所有相关代码,简化但足以重现您的问题,这是首选。@AshleyMills它应该是Int或Double,这是一个时间戳(2018年9月11日5:02:21 AM)是的,这是真的-似乎他们的Web服务需要工作,尽管它返回一个字符串!我不能将since设置为String,因为有时它返回Int,在另一种情况下它是“since”:1536642141