Just simply changing it to:
.map { String.init(localized: $0) }
works?
Test:
import SwiftUI
struct Foo {
init(localized: String.LocalizationValue) { }
}
struct ContentView: View {
let genresAA = Array<String.LocalizationValue>(["Pop", "Rock", "Electronic"]).map { String.init(localized: $0) } // String.init(localized:) exist!
let genresBB = Array<String.LocalizationValue>(["Pop", "Rock", "Electronic"]).map(Foo.init(localized:)) // my own struct this form works!!
// but String.init(localized:) do not compile:
// compile errors: Generic parameter 'T' could not be inferred
// Type 'String' has no member 'init(localized:)'
// v v
let genresXX = Array<String.LocalizationValue>(["Pop", "Rock", "Electronic"]).map(String.init(localized:))
var body: some View {
Text("Hello, world!")
.padding()
}
}
Edit: it seem String.init(localized:)
is odd: Xcode jump to definition cannot find it. Maybe it's some kind of strange thing? Maybe it's not a function?
Okay, never mind, its full signature is: