gpt4 book ai didi

ios - 快速从数组中提取值

转载 作者:行者123 更新时间:2023-11-29 00:02:42 26 4
gpt4 key购买 nike

我在对存储在数组中的对象的响应中获取字符串值。它存储正确。现在我想从我的数组中获取这些值,因为稍后我必须将它添加到另一个字符串中以获得它们的总和。我的数组看起来像这样 [0.5,0.5,0.5]。我必须提取所有 0.5 值并添加它们。我尝试了一个提取值的代码,但结果显示 0 值。我的代码是这样的,

let itemprice = UserDefaults.standard.string(forKey: "itemPrice")
print(itemprice)
let defaults = UserDefaults.standard
let array = defaults.array(forKey: "addonPrice") as? [Int] ?? [Int]()
print(array)
let resultant = array.reduce(0, +)
print(resultant)
let result = itemprice! + String(resultant)
print(result)

我正在尝试将数组值添加到另一个名为 itemprice 的值。我怎样才能从我的数组中取出所有值并添加它们。数组中的值随时间变化。

最佳答案

作为 let resultant = array.reduce(0, +) 的结果,你得到 0 因为在

let array = defaults.array(forKey: "addonPrice") as? [Int] ?? [Int]() 

存储在默认值中的值是一个空数组,还是强制转换 as? [Int] 失败。

考虑到您声称该数组应该保存值 [0.5,0.5,0.5] 我假设是后一种情况。 [0.5,0.5,0.5]Double 值的数组,而不是 Int 值。

尝试这样修复:

let array = defaults.array(forKey: "addonPrice") as? [Double] ?? [Double]() 

更新

从评论看来你到处都在使用字符串,那么:

let itemprice = UserDefaults.standard.string(forKey: "itemPrice")
print(itemprice)
let defaults = UserDefaults.standard
// take it as an array of strings
let array = defaults.array(forKey: "addonPrice") as? [String] ?? [String]()
print(array)
// convert strings to Double
let resultant = array.map { Double($0)! }.reduce(0, +)
print(resultant)
let result = Double(itemprice!)! + resultant
print(result)

虽然我会强烈建议您从一开始就使用Double(存储和使用它)。

关于ios - 快速从数组中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031224/

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