在swift中从数组中提取值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在swift中从数组中提取值相关的知识,希望对你有一定的参考价值。

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

答案

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

以上是关于在swift中从数组中提取值的主要内容,如果未能解决你的问题,请参考以下文章

如何在Javascript中从数组中提取值

如何在 Swift 5 中从数组中获取值

在 Redshift SQL 中从数组中提取值

如何在 Swift 中从 alamofire 中提取数据? [复制]

如何在 C++ 中从字节数组(在 BIG-ENDIAN 中)中提取单个字段

如何在 $.ajax 响应中从 JSON 中提取数组