2017-10-19 8 views
0

すごく素早くオブジェクト指向で新しいので、私に同行してください。私はデータを格納するのに使う小さなクラスを持っています。クラス構成に保存されているすべてのデータを削除するSWIFT3

class Coin { 

    //MARK: Properties 

    var name: String 
    var symbol: String 
    var date: Date 
    var time: String 


    init?(name: String, symbol: String, date: Date, time: String) { 
     self.name = name 
     self.symbol = symbol 
     self.date = date 
     self.time = time 



     if name.isEmpty { 
      return nil 
     } 

    } 


} 

アプリケーションの経過とともに、最新の情報を表示するためにこのデータを更新する必要があります。これらのCOINオブジェクトからデータを読み込もうとするたびに、配列のデータを2倍にしてロードします。 例えば、最初の実行は、第二は、20

これは、データが別々のクラスのオブジェクトから読み込まれているか

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] 

    } 

でのこの重複を回避する方法上の任意のアイデアになり、10個のオブジェクトになりますデータ?

+0

更新しようとすると、どのフィールド値が変更されるか、すべてのフィールドが変更される可能性がありますか? –

答えて

0

関数を呼び出すたびに、データを合計するために "+ = [coin1]"を使用します。あなたがコインオブジェクトの配列を持っていたい場合は、単にcoins.append(コイン)を使用します。

0

いつも​​の数字がcoinsにあると予想される場合は、新しいものを追加する代わりに既存のコインに変更を加えることを検討してください。たとえば:

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 
} 

あなたがないは、既存のコインを変更する場合は、​​構造体を作成し、定数としてそのすべてのプロパティを宣言することを検討してください。この場合、コインを更新する別の方法が必要になります。例えば、これは不変の硬貨で動作します:

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 
} 
関連する問題