gpt4 book ai didi

ios - 添加到 swift 数组会不断覆盖最后一个对象

转载 作者:可可西里 更新时间:2023-11-01 01:42:04 27 4
gpt4 key购买 nike

我想不断地向全局/常量数组添加值。问题是它只是不断覆盖最后一个值而不是将其添加到数组中,所以我总是以 2 个值结束

全局数组

struct Globals {


struct savedCalculationData {

static var dataArray = ["something here"]
}
}

保存到另一个类中的数组

        //code to copy string value... 

//Add to global array
var copiedDataArray = Globals.savedCalculationData.dataArray
copiedDataArray.append ("\(copyText)") <--- string value

//Save array to defaults
NSUserDefaults.standardUserDefaults().setObject(copiedDataArray, forKey: "savedDataArray")
NSUserDefaults.standardUserDefaults().synchronize()

最佳答案

您正在附加到全局数组的副本,但似乎从未将更新后的数组设置回去,因此全局数组没有改变。

假设您希望在附加到全局数据时保存全局数据,我建议您设计 Globals 结构以自动处理此问题:

struct Globals {

// Convenience variable for the standard defaults
private static var Defaults: NSUserDefaults { return NSUserDefaults.standardUserDefaults() }

struct SavedCalculationData {
private static let DataArrayKey = "savedDataArray"
static var dataArray: [String] {
get {
return Defaults.objectForKey(DataArrayKey) as? [String] ?? []
}
set {
// This setter is called when the array contents change,
// not just when a new array is set
Defaults.setObject(newValue, forKey: DataArrayKey)
Defaults.synchronize()
}
}
}
}

然后你可以更简洁地更新全局数据:

Globals.SavedCalculationData.dataArray.append(copyText)

关于ios - 添加到 swift 数组会不断覆盖最后一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925886/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com