删除存储在类构造SWIFT3中的所有数据

时间:2017-10-19 10:51:48

标签: ios swift class object 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对象加载数据时,我最终会将我加载的数组中的数据加倍。 例如,第一次运行将是10个对象,第二次将是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]

    }

有关如何避免重复数据的任何想法?

2 个答案:

答案 0 :(得分:0)

每次调用此功能时都使用" + = [coin1]"用于求和数据。如果你想拥有硬币对象数组,只需使用coins.append(硬币)。

答案 1 :(得分:0)

如果您希望Coin始终拥有一定数量的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
}

如果您正在修改现有硬币,请考虑将Coin作为结构并将其所有属性声明为常量。在这种情况下,您需要另一种更新硬币的方法。例如,这适用于不可变的硬币:

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
}