删除存储在类构造函数 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 中的所有数据的主要内容,如果未能解决你的问题,请参考以下文章