问答详情
源自:2-3 swift结构体之可失败的构造函数

关于拆包问题

为什么

commaIndex = coordinateString.rangeOfString(",")?.startIndex  使用?拆包

Double(coordinateString.substringToIndex(commaIndex))  不能使用呢,使用还会报错,强制转换不是也可能有值,可能没值吗


提问者:iOS_滚滚猫 2016-06-18 10:53

个回答

  • YumaiCode
    2016-07-30 03:37:44

    补充,解包操作:

    if let a = b {........}  else {..........}           注:b为可选型

    guard let a = b  else {..........}               注:b为可选型

  • YumaiCode
    2016-07-30 03:28:59

    因为,coordinateString.rangeOfString(",")返回值类型是可选型,进行coordinateString.rangeOfString(",")?.startIndex操作是尝试解包(“?”是尝试解包的意思,“.”是解包后执行后面的操作),且之后的结果也是可选型。再用,let...进行解包

    而coordinateString.substringToIndex(commaIndex)返回值类型为String,Double(coordinateString.substringToIndex(commaIndex))返回值为可选型,此处之后没有进行其他的操作,因此无需添加“?”。然后,let...进行解包

  • kevinlu01
    2016-06-20 15:35:41

    可以贴出错误信息看看。

    Double(coordinateString.substringToIndex(commaIndex))  不能使用呢,使用还会报错,强制转换不是也可能有值,可能没值吗

    强制转换的确是可选类型,可以使用拆包后再使用

    if let firstValue = Double(coordinateString.substringToIndex(commaIndex)){
            print(firstValue)
            }