gpt4 book ai didi

arrays - 尝试将本地函数中的 Firebase 项目附加到全局数组(数组必须是本地数组)

转载 作者:行者123 更新时间:2023-11-30 12:08:13 25 4
gpt4 key购买 nike

我试图将 Firebase 中的值附加到数组中,但它没有附加(我通过调试器知道这一点)。 Firebase 不是问题,也没有其他问题,只是这些值不会附加到全局数组,只是因为这些值附加在本地函数中,由于某种原因,该函数不会更改数组的值。

如何追加并实际更改 statData 数组的值(以便实际追加是本地的)。请不要询问 Firebase 树或我的代码的效率,只是询问我需要附加方面的帮助。

背景:我有一个 Collection View ,它有 2 个标签,其中包含 2 个来自 Firebase 的值数组

var statData = [String]()

...
ref?.child("users").child(user!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let statret = value?["status"] as? String ?? ""
self.statData.append(statret)
self.statData.append(statret)
self.statData.append(statret)

// ...
}) { (error) in
print(error.localizedDescription)
}

最佳答案

要声明您的数组,如果它是字符串数组,您应该编写:

var statData = [String]()

这将创建您的数组并将其初始化为空的字符串数组

那么我不知道为什么你在代码中同一行写了 3 次,但无论如何只写一次就足够了:

self.statData.append(statRet)

另外,我认为这个问题与数组是全局的这一事实无关,因为无论是否全局,您仍然可以以类似的方式向其附加一些数据。

这里的另一件事可能是您的数组根本没有被填充的原因,是您从数据库获取数据的方式。您可以这样编写代码:

// ...

guard userId != nil else {
return
}

ref?.child("users").child(userId!).observeSingleEvent(of: .value, with: { (snapshot) in

// ...

// By using a guard statement here, you make sure that your status child does exist and represents a String.
//If not, the return statement will be called.
// You may consider adding a break point inside the else statement for debug, if you are still unable to get any data.

guard let statRet = snapshot.childSnapshot(forPath: "status").value as? String else { return }

self.statData.append(statRet)

// ...

})

关于arrays - 尝试将本地函数中的 Firebase 项目附加到全局数组(数组必须是本地数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46417123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com