删除存储在类构造函数 SWIFT 3 中的所有数据

Posted

技术标签:

【中文标题】删除存储在类构造函数 SWIFT 3 中的所有数据【英文标题】:Delete all data stored in a Class Construct SWIFT3 【发布时间】:2017-10-19 10:51:48 【问题描述】:

对 swift 和面向对象完全陌生,所以请多多包涵。我有一个用来存储数据的小班。

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]

    

关于如何避免这种数据重复的任何想法?

【问题讨论】:

尝试更新时,哪些字段值可能会更改或所有字段? 【参考方案1】:

每次调用函数时,都使用“+= [coin1]”对数据求和。如果您想拥有硬币对象数组,只需使用 coin.append(coin)。

【讨论】:

【参考方案2】:

如果您希望始终在coins 中有一定数量的Coin,请考虑改变您现有的硬币而不是添加新硬币。例如:

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

【讨论】:

以上是关于删除存储在类构造函数 SWIFT 3 中的所有数据的主要内容,如果未能解决你的问题,请参考以下文章

Swift 构造过程

在类构造函数内初始化 Dev C 中的字符串数组

自描述C++部分面试题集

简述在类的继承关系中,子类可以继承父类的都有哪些成员

类模板案例(11)

在类构造函数中拆分字符串