如何找到 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
设置了一个Int
(minutesint
),通过一个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 只能在 Array
s 上使用?
我做错了什么?
任何人都可以指出我正确的方向吗?
改为将其作为 int 数组读取[Int]
var minutesArray = UserDefaults.standard.array(forKey: "minutesarray") as? [Int] ?? [Int]()
所以我正在尝试制作一个 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
设置了一个Int
(minutesint
),通过一个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 只能在 Array
s 上使用?
我做错了什么?
任何人都可以指出我正确的方向吗?
改为将其作为 int 数组读取[Int]
var minutesArray = UserDefaults.standard.array(forKey: "minutesarray") as? [Int] ?? [Int]()