Swift вернет случайную строку - PullRequest
0 голосов
/ 12 января 2020

Почему это работает только с числами? Я могу получить случайное число, но не случайную строку. Как мне отформатировать его?

struct ContentView: View {

    let results = [8, 5, 10].map(Result.init)
    let orden = ["hej", "ta", "tojj"].map(Ord.init)

    @State var randomResult: Result?
    @State var randomOrd: Ord?

    var body: some View {
        VStack {
            Button(action: {


               self.randomResult = self.results.randomElement()
                self.randomOrd = self.orden.randomElement()
            }) {
                Text("Button title, \(randomResult?.score ?? 0)")

               Text(randomOrd?.ord ?? 0)
               // THIS DOESN'T WORK even when i put an Int around it 


            }

        }
    }
}

Ответы [ 2 ]

1 голос
/ 12 января 2020

Текстовый инициализатор занимает content типа StringProtocol:

init<S>(_ content: S) where S : StringProtocol

Обратите внимание, что в

Text("Button title, \(randomResult?.score ?? 0)")

вы передаете строку (с интерполированным int), которая является действительной. Однако в

Text(randomOrd?.ord ?? 0)

кажется, что вы пытаетесь передать напрямую int, что недопустимо.

В зависимости от типа ord:

Если это строка, вы должны реализовать ее как:

Text(randomOrd?.ord ?? "0") // OR maybe Text(randomOrd?.ord ?? "")

А если это целое число:

Text("\(randomOrd?.ord ?? 0)")
1 голос
/ 12 января 2020

Значение по умолчанию 0 определенно не является строкой. Строковый эквивалент - пустая строка

Text(randomOrd?.ord ?? "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...