Map and Convert to Array of String, ""Cannot convert return expression of type '[NumbersResponse.numbers]' to return type 'Array<String>' "

Viewed 35

I've got a model that resembles the response from the back end, which looks something like this

public enum Numbers: String, Codable {
    case one = "one"
    case two = "two"
    case three = "three"
}

public init(numbers: [Numbers]) {
    self.numbers = Numbers
}

I'm trying to extract Numbers and convert it to an array of string like this

public var numbers: Array<String> {
    return NumbersResponse.numbers

}

but I keep getting this error:

Cannot convert return expression of type '[NumbersResponse.numbers]' to return type 'Array'

I've tried using a map as well but no luck.*

1 Answers

The problem is in this code:

public var numbers: Array<String> {
    return NumbersResponse.numbers
}

You are trying to assign an array of type Numbers to an array of strings.

It's hard to answer without more context, but I guess you have two options to solve it. First, your numbers variables defined as an array of Numbers

public var numbers: [Numbers] {
    return NumbersResponse.numbers
}

Or as an array of Strings:

public var numbers: [String] {
    return NumbersResponse.numbers.map { $0.rawValue }
}
Related