SwiftUI 的变形参数真的只有在直接在文本小部件中使用时才起作用吗?

Boo*_*unz 1 string plural inflector swiftui

当使用 SwiftUI 的 inflect 参数时,如下所示:

import SwiftUI

struct ContentView: View {
    @State  var count = 1
    
    var body: some View {
        VStack {
            VStack{
                
                Text("^[\(count) Song](inflect: true)")
                Button("Add"){ count += 1}
                Button("Remove"){ count -= 1}
            }
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都按预期进行,但如果我们尝试做这些事情,却不会:

import SwiftUI

struct ContentView: View {
    @State  var count = 1

    
    var body: some View {
        VStack {
            VStack{
                Text(generateString)
                Button("Add"){ count += 1}
                Button("Remove"){ count -= 1}
            }
        }
        .padding()
    }
}

func generateString(count:Int) -> String {
    return "^[\(count) Song](inflect: true)"
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望事实并非如此。如果是这样,为什么呢?

Pas*_*que 5

只需将方法的返回类型更改为即可LocalizedStringKey,它应该可以工作:

func generateString(count:Int) -> LocalizedStringKey {
    return "^[\(count) Song](inflect: true)"
}
Run Code Online (Sandbox Code Playgroud)