Cannot convert return expression of type &#39;CountableClosedRange<int>&#39; to return type &#39;Int?&#39; in Switch-case

时间:2018-04-18 18:02:40

标签: ios swift switch-statement uipickerview

I am trying to return ranges of values when the user select from pickerview. I used switch-case statements. My question is about, how to return ranges of values in return statement?

Here is my code. It is not correct since I got this error, Cannot convert return expression of type 'CountableClosedRange' to return type 'Int?'

  private func price(from string: String) -> Int? {
    switch string {
    case "less than 100":
        return 0 ... 100 // the error is here
    case "500-100":
        return 100 ... 500
    case "1000-500":
        return 500 ... 1000
    case "3000-1000":
        return 1000 ... 3000
    case "5000-3000":
        return 3000 ... 5000
    case "larger than 5000":
        return (I don't know)
    case _:
        return nil
    }
}

1 个答案:

答案 0 :(得分:1)

I don't understand what sense your switch cases are supposed to make, but this, though conceptually nonsensical in my opinion, at least will compile:

private func price(from string: String) -> CountableClosedRange<Int>? {
    switch string {
    case "less than 100":
        return 0 ... 100 // the error is here
    case "500-100":
        return 100 ... 500
    case "1000-500":
        return 500 ... 1000
    case "3000-1000":
        return 1000 ... 3000
    case "5000-3000":
        return 3000 ... 5000
    case "larger than 5000":
        return 5000 ... Int.max
    case _:
        return nil
    }
}