Reputation: 13
The function is being called successfully in a separate page but nothing ever gets added to the array can anyone help? Im trying to Create an array that would contain a list of cards automating it instead of having to list out all of the names of the cards
import Foundation
import SwiftUI
struct DeckSetup {
@State var deckOCards: [String] = ["e"]
@State public var yourhand: [String] = []
@State public var dealerHand: [String] = []
func setupDeck() {
// Club Cards
for i in 2...10 {
deckOCards += [String(i) + " of Clubs"]
}
deckOCards.insert("Ace of Clubs", at: 0)
deckOCards.append( "King of Clubs")
deckOCards.append("Queen of Clubs")
deckOCards.append("Jack of Clubs")
//Heart Cards
for i in 2...10 {
deckOCards.append(String(i) + " of Hearts")
}
deckOCards.append("Ace of Hearts")
deckOCards.append("King of Hearts")
deckOCards.append("Queen of Hearts")
deckOCards.append("Jack of Hearts")
print(deckOCards.joined())
}
}
Upvotes: 0
Views: 232
Reputation: 52575
Since DeckSetup
isn't a View
, @State
won't work as expected, which is only for use within a SwiftUI View
.
Instead, assuming you're using this in SwiftUI, you probably want an ObservableObject
. This works as expected, for example:
class DeckSetup : ObservableObject {
@Published var deckOCards: [String] = ["e"]
@Published public var yourhand: [String] = []
@Published public var dealerHand: [String] = []
func setupDeck() {
// Club Cards
for i in 2...10 {
deckOCards += [String(i) + " of Clubs"]
}
deckOCards.insert("Ace of Clubs", at: 0)
deckOCards.append( "King of Clubs")
deckOCards.append("Queen of Clubs")
deckOCards.append("Jack of Clubs")
//Heart Cards
for i in 2...10 {
deckOCards.append(String(i) + " of Hearts")
}
deckOCards.append("Ace of Hearts")
deckOCards.append("King of Hearts")
deckOCards.append("Queen of Hearts")
deckOCards.append("Jack of Hearts")
print(deckOCards.joined())
}
}
You would use it in your view like:
struct ContentView: View {
@StateObject var deckSetup = DeckSetup()
//body, etc
}
Upvotes: 1