2017-10-19 22 views
0

Assez nouveau à rapide et orienté objet complètement alors s'il vous plaît ours avec moi. J'ai une petite classe que j'ai utilisée pour stocker des données. Au cours de l'application, ces données doivent être mises à jour pour afficher des informations mises à jour au cours de l'application. Chaque fois que j'essaie de charger des données à partir de ces objets COIN, je finis par doubler les données dans le tableau dans lequel je le charge. Par exemple, la première course sera de 10 objets, deuxième sera 20.Supprimer toutes les données stockées dans une classe Construct SWIFT3

Voici comment les données sont en cours de chargement de l'objet dans une classe séparée

var coins = [Coin]() 

    private func loadCoins(CoinName: String, Symbol: String, Date: Date, Time: String) { 
     guard let coin1 = Coin(name: CoinName, symbol: Symbol, date: Date, time:Time) else { 
      fatalError("Unable to instantiate coin1") 
     } 



     coins += [coin1] 

    } 

Toutes les idées sur la façon d'éviter cette duplication des Les données?

+0

Lors d'une tentative de mise à jour, quelles valeurs de champ peuvent changer ou tous les champs? –

Répondre

0

Chaque fois que vous appelez la fonction Vous utilisez "+ = [pièce1]" pour additionner les données. Si vous voulez avoir un tableau d'objet pièce, utilisez simplement pièces.appel (pièce de monnaie).

0

Si vous prévoyez d'avoir un certain nombre de Coin dans coins à tout moment, envisagez de muter vos pièces existantes au lieu d'en ajouter de nouvelles. Par exemple:

private func updateCoin(at index: Int, name: String, symbol: String, date: Date, time: String) { 
    guard name.isEmpty == false else { 
     print("Did not update coin at index \(index) because name was an empty string") 
    } 
    coins[index].name = name 
    coins[index].symbol = symbol 
    coins[index].date = date 
    coins[index].time = time 
} 

Si vous ne être modifier les pièces existantes, envisager de faire Coin une struct et déclarant toutes ses propriétés constantes. Dans ce cas, vous auriez besoin d'une autre méthode de mise à jour des pièces de monnaie. Par exemple, cela fonctionnerait avec des pièces immuables:

private func updateCoin(at index: Int, name: String, symbol: String, date: Date, time: String) { 
    guard let newCoin = Coin(name: name, symbol: symbol, date: date, time: time) else { 
     print("Coin could not be initialized with values name: \(name), symbol: \(symbol), date: \(date), time: \(time)") 
    } 
    coins[index] = newCoin 
}