SwiftUI: я хочу использовать информацию из своего массива, но не могу найти нужную команду

Я новичок в программировании, и у меня проблемы с более сложными аспектами. Я пытаюсь использовать набор данных под названием playerCameCards и случайным образом добавляю 5 из них в playerCards. Мне удалось это сделать, но я хочу отображать имя: последнего добавленного элемента, но я не могу понять, как это сделать. Буду признателен за помощь. Ниже мой код.

import Foundation
import SwiftUI

class Cards: ObservableObject {

    @Published var playerCards = [gameCards]()
    @Published var playerGameCards = [
        gameCards(id: 1, name: "name1", attack: 92, defence: 49, gameControl: 60, creativity: 72, legend: 4),
        gameCards(id: 2, name: "name2", attack: 87, defence: 40, gameControl: 65, creativity: 80, legend: 2),
        gameCards(id: 3, name: "name3", attack: 43, defence: 93, gameControl: 40, creativity: 45, legend: 3),
        gameCards(id: 4, name: "name4", attack: 88, defence: 51, gameControl: 80, creativity: 92, legend: 5),
        gameCards(id: 5, name: "name5", attack: 85, defence: 51, gameControl: 72, creativity: 81, legend: 3),
        gameCards(id: 6, name: "name6", attack: 91, defence: 38, gameControl: 72, creativity: 89, legend: 5),
        gameCards(id: 7, name: "name7", attack: 34, defence: 95, gameControl: 40, creativity: 50, legend: 5),
        gameCards(id: 8, name: "name8", attack: 86, defence: 63, gameControl: 89, creativity: 84, legend: 4),
        gameCards(id: 9, name: "name9", attack: 90, defence: 30, gameControl: 50, creativity: 83, legend: 5),
        gameCards(id: 10, name: "name10", attack: 32, defence: 92, gameControl: 42, creativity: 32, legend: 4)
    ]
}
struct gameCards: Identifiable {

    let id: Int
    let name: String
    let attack: Int
    let defence: Int
    let gameControl: Int
    let creativity: Int
    let legend: Int



}





import SwiftUI

struct ContentView: View {
    @EnvironmentObject var cardData: Cards
    @State var firstTime: Bool = false
    @State var currentCard: String = "Back"

    var body: some View {

        ZStack{

            VStack{

                Spacer()

                Text("Lets open your 1st cards").background(Color.white).font(.title)

                Spacer()

Ниже я хочу показать имя, например, "name1" из последнего элемента, добавленного в мой массив playerCards. Я могу сделать это изображение в будущем и использовать ID: для отображения соответствующего изображения, но я не могу получить доступ к типам в моем массиве

          Text("I want to show the "name" of the element in the last array I've just used").frame(width: 200, height: 200).background(Color.blue)

                Spacer()

                Button(action:{
                            if self.cardData.playerCards.count <= 4{
                                self.cardData.playerCards.append(self.cardData.playerGameCards.randomElement()!)


                                print("\([self.cardData.playerCards.last])")

                            }

                            if self.cardData.playerCards.count > 4 {
                                self.firstTime = true
                            }

                    }){

                            if self.cardData.playerCards.count <= 4 {
                            Image("Click").renderingMode(.original).resizable().frame(width: 100, height: 100)


                            }
                            else{
                                NavigationLink(destination: ContentView()){Image("Continue").renderingMode(.original).resizable().frame(width: 100, height: 100)
                                    }
                            }

                    }
            }
        }
    }
}

1 ответ

Решение

Вот как встроить значение в строку в Swift:

if self.cardData.playerCards.last != nil {
     Text("I want to show the \(self.cardData.playerCards.last!.name) of the element in the last array I've just used")
 }
Другие вопросы по тегам