如何找到 NSMutableArray 的所有元素的总和? Swift

How to find the sum of all elements of an NSMutableArray? Swift

所以我正在尝试制作一个 NSMutableArray 可以在另一个 viewcontroller 输入值时更新。

另一个viewcontroller是我们的"AddNewViewController."

AddNewViewController.swift

nameArray.add(namestring)

minutesArray.add(minutesint!)


print(nameArray)
print(minutesArray)


UserDefaults.standard.set(nameArray.mutableCopy(), forKey: "namearray")
UserDefaults.standard.set(minutesArray.mutableCopy(), forKey: "minutesarray")
UserDefaults.standard.synchronize()

NameArray 无关紧要,使用输入的字符串并将其添加到我们的 namearray。

问题出在minutesArray:我给minutesArray设置了一个Intminutesint),通过一个UITextField输入,转换成一个整数。然后将其放入我们的 UserDefaults 以用于我们的其他 viewcontroller、ViewController

ViewController.swift

nameArray = UserDefaults.standard.mutableArrayValue(forKey: "namearray")
minutesArray = UserDefaults.standard.mutableArrayValue(forKey: "minutesarray")


let myCell = UITableViewCell()
myCell.textLabel?.text = ("Name: \(nameArray[indexPath.row] as! String)    Score (minutes): \(minutesArray[indexPath.row] as! Int)")

return myCell

我应该澄清一下,上面是我的 cellForRowAt 声明。如您所见,它将所有内容都设置到我们的 tableview 中,非常漂亮。

但是,当我尝试使用其他问题的技巧时,例如使用 "reduce" 作为 NSArray 来总结所有元素时,我从这段代码中得到了这个错误:

let sumarray = minutesArray.reduce(0, +)
//Error: Ambiguous reference to member '+'

我意识到我的格式有问题,因为当我用像

这样的不可变数组测试它时
let array = [1, 2 ,3]
let testarray = array.reduce(0, +)
print (testarray)

它给了我一个漂亮、性感的 5 号印花?

当我检查 array 的类型时,它显然是 [Int] 类型。但是,我认为 reduce 只能在 Arrays 上使用?

我做错了什么?

任何人都可以指出我正确的方向吗?

改为将其作为 int 数组读取[Int]

var minutesArray = UserDefaults.standard.array(forKey: "minutesarray") as? [Int] ?? [Int]()