在swift中从数组中提取值

问题描述 投票:0回答:1

我在我的响应中获取字符串的值,我将其存储在数组中。它正在正确存储。现在我想从我的数组中获取值,因为稍后我必须在另一个字符串中添加它以获得它们的总和。我的数组看起来像这样,[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的另一个值。如何从阵列中取出所有值并添加它们。数组中的值会有不同的时间。

ios swift3
1个回答
1
投票

由于0,你得到let resultant = array.reduce(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]() 

UPDATE

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

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(两者都存储并使用它)。

© www.soinside.com 2019 - 2024. All rights reserved.