ios - 试图从 Firebase 捕获整数数据到数组中,然后对所有元素求和

标签 ios arrays swift firebase firebase-realtime-database

我试图从 Firebase 中获取一堆整数值,将它们存储到一个数组中,然后添加所有元素。

我试过用

let sum:Int = challengeList.reduce(0, +)

获取名为 challengeList 的数组中元素的总和,但我收到的错误是“对成员 '+' 的不明确引用”

func LoadPointsCompleted() {

        self.challengeList.removeAll()

        databaseReference = Database.database().reference()

        let userID = Auth.auth().currentUser?.uid

        let refChallenges = Database.database().reference(withPath: "Challenges").child(userID!).queryOrdered(byChild: "Status").queryEqual(toValue: "Complete")

        refChallenges.observeSingleEvent(of: .value, with: { (snapshot) in

            //if the reference have some values
            if snapshot.childrenCount > 0 {

                //clearing the list
                self.challengeList.removeAll()



                //iterating through all the values
                for Challenges in snapshot.children.allObjects as! [DataSnapshot] {
                    //getting values
                    let challengeObject = Challenges.value as? [String: AnyObject]
                    let Points = challengeObject?["Points"] as! Int

                    //creating challenge object with model and fetched values
                    let challenge = pointsModel(Points: Points as Int?)

                    //appending it to list
                    self.challengeList.append(challenge)


                    let sum:Int = challengeList.reduce(0, +)
                }


            }



        }

        )}

//同样使用下面的模型

import Foundation

class pointsModel {

    var Points: Int?

    init(Points: Int?){

        self.Points = Points
    }
}

我无法编译...

最佳答案

由于 points 始终是 Int,因此无需将其设为可选。您也可以使用 struct,这样就无需创建自己的初始化程序,您可以免费获得它

struct PointsModel {
    var points: Int
}

...注意类型以大写字母开头,常量、变量、方法以小写字母开头


然后你可以通过添加 points 属性来编译它,而不是整个模型

challengeList.reduce(0) {$0 + $1.points}

关于ios - 试图从 Firebase 捕获整数数据到数组中,然后对所有元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54018330/

相关文章:

ios - 是否可以从 iTunes 中列出应用程序中使用的库

ios - UITableView,不可见区域的另一个单元格有一个复选标记,而可见区域的一个单元格被触摸

ios - cocos2d 3.0如何优先处理触摸吞咽

macos - 在 Swift 中将点击处理程序添加到 NSTextField

ios - "Binary operator ' ~= ' cannot be applied to operands of type '

iphone - 在ios中创建PDF到图像

javascript - 为什么在访问对象内的数组时出现未定义?

PHP RecursiveArrayIterator类递归获取键值对

javascript - 二维数组和自动完成

javascript - 使用 UIWebview 使用 javascript 调用 swift 函数