【问题标题】:How to find the sum of all elements of an NSMutableArray? Swift如何找到 NSMutableArray 的所有元素的总和?迅速
【发布时间】:2020-04-03 09:08:51
【问题描述】:

所以我正在尝试制作一个NSMutableArray,它可以在另一个视图控制器输入值时更新。

另一个视图控制器是我们的“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 无关紧要,使用输入的字符串并将其添加到我们的名称数组中。

问题出在minutesArray:我为minutesArray设置了一个Int(minutesint),通过UITextField输入并转换为int。然后将其放入我们的UserDefaults 以用于我们的其他视图控制器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 中,非常漂亮。

但是,当我尝试使用其他问题的提示时,例如使用 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 上使用?

我做错了什么?

谁能指出我正确的方向?

【问题讨论】:

  • 不要使用NSMutableArray。使用原生 Swift Array - 它可以像 var 一样免费更改 - 歧义消失了
  • ... 并且强烈建议不要使用多个数组作为数据源(同样)。

标签: arrays swift nsarray


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2021-01-06
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多