j'ai un jeu et Im essayant de le garder petit et dans mon jeu que j'ai cette fonctionSet Les valeurs de UserDefaults multiples avec fonction unique Swift 3
func deductCoins() -> Bool {
if price > coins {
label.text = String("You dont have enough coins")
self.view.addSubview(label)
return false
}
if coins >= price {
coins = coins - price
UserDefaults.standard.set(coins, forKey: "Coins")
BackBtn.removeFromSuperview()
PurchaseBtn.removeFromSuperview()
label.removeFromSuperview()
image.removeFromSuperview()
return true
}
return true
}
cette fonction est utilisée pour acheter du contenu dans le jeu est là une façon de passer d'un paramètre ou une méthode pour modifier différents UserDefault
Boolean
valeurs true basée sur une variable par exemple dans psuedo code
func deductCoins() -> Bool {
if price is greater than coins {
tell the user that he/she doesnt have enough coins
}
if coins is greater than coins {
tell the user he/she has bought the item
change a UserDefault Boolean value
if a value is different based on a parameter
change a different value because of it
}
}
Je ne suis pas bon à l'écriture des fonctions complexes et à long je l'ai utilisé cette fonction pour ne déverrouiller un élément dans un ViewController
mais maintenant je suis en utilisant des cellules CollectionView avec différents éléments en eux et je veux déverrouiller un contenu différent en fonction de ce que l'utilisateur en utilisant une seule cueillies à la fonction
-update 1 -
ici est ce que je suis venu avec son certainement pas la meilleure méthode, mais il fonctionne
//this Int value is set in the Index method in my collectionView
var Int = 0
func deductCoins() -> Bool {
if price > coins {
label.text = String("You dont have enough coins")
self.view.addSubview(label)
return false
}
if coins >= price {
if Int == 1 {
coins = coins - price
UserDefaults.standard.set(coins, forKey: "Coins")
BackBtn.removeFromSuperview()
PurchaseBtn.removeFromSuperview()
label.removeFromSuperview()
image.removeFromSuperview()
UserDefaults().set(true, forKey: "ItemUnlocked")
return true
}
if Int == 2 {
coins = coins - price
UserDefaults.standard.set(coins, forKey: "Coins")
BackBtn.removeFromSuperview()
PurchaseBtn.removeFromSuperview()
label.removeFromSuperview()
image.removeFromSuperview()
UserDefaults().set(true, forKey: "ItemUnlocked")
return true
}
if Int == 3 {
coins = coins - price
UserDefaults.standard.set(coins, forKey: "Coins")
BackBtn.removeFromSuperview()
PurchaseBtn.removeFromSuperview()
label.removeFromSuperview()
image.removeFromSuperview()
UserDefaults().set(true, forKey: "ItemUnlocked")
return true
}
if Int == 4 {
coins = coins - price
UserDefaults.standard.set(coins, forKey: "Coins")
BackBtn.removeFromSuperview()
PurchaseBtn.removeFromSuperview()
label.removeFromSuperview()
image.removeFromSuperview()
UserDefaults().set(true, forKey: "ItemUnlocked")
return true
}
if Int == 5 {
coins = coins - price
UserDefaults.standard.set(coins, forKey: "Coins")
BackBtn.removeFromSuperview()
PurchaseBtn.removeFromSuperview()
label.removeFromSuperview()
image.removeFromSuperview()
return true
}
}
return true
}
et est ici la méthode du chemin d'index
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// handle tap events
if indexPath.item == 0 {
//the first item in my Index path is free it cost nothing
//other things happen here i didnt post on purpose to keep some privacy
}
if indexPath.item == 1 {
Int = 1
//other things happen here i didnt post on purpose to keep some privacy
}
if indexPath.item == 2 {
Int = 2
//other things happen here i didnt post on purpose to keep some privacy
}
if indexPath.item == 3 {
Int = 3
//other things happen here i didnt post on purpose to keep some privacy
}
if indexPath.item == 4 {
Int = 4
//other things happen here i didnt post on purpose to keep some privacy
}
if indexPath.item == 5 {
Int = 5
//other things happen here i didnt post on purpose to keep some privacy
}
}
et c'est ce que je suis venu avec et il fonctionne comme je l'ai besoin aussi si les gars vous avez d'autres meilleures méthodes s'il vous plaît me frapper avec un anwser et vérifier malade dehors
Conserver les booléens d'achat d'applications dans les valeurs par défaut est une grande vulnérabilité. Les valeurs par défaut de l'utilisateur peuvent être modifiées facilement sans votre consentement. – Desdenova
non pas de contenu dans le jeu acheté avec des pièces de jeu im im pas assez stupide pour utiliser UserDefaults pour les achats in-app (parce que je l'habitude de pirater des jeux comme ça) –