如何从 Firebase getDocument 函数 (Swift) 中写入变量

2024-03-18

我想读取一个文档,从该文档中获取一个字段,并将一个变量设置为该字段的值

我希望写入在 Firebase getDocument 函数外部声明的变量。实际结果是该变量正在 Firebase getDocument 函数内写入,但在函数外部它为空。

这是我尝试过的:

[1]: 修改firebase函数中的变量 https://stackoverflow.com/questions/45742362/modifying-variable-within-firebase-function- 这对我不起作用,因为我无法用我目前的 Swift 技能很好地翻译它

[2]: 如何从 Firebase 快照设置变量(快速) https://stackoverflow.com/questions/40200217/how-to-set-variables-from-a-firebase-snapshot-swift- 这对我不起作用,因为实现与我现在所拥有的有很大偏差


//open the user Firebase database by documentID
     let userDocument = userdb.collection("users").document(userDocumentId)

     var userjobsData = [[String:Any]]()

     userDocument.getDocument { (docums, error)  in

         if let docum = docums, docum.exists {

         //grab all jobs data
         userjobsData = docum.get("jobData") as! [[String:Any]]

         //sort jobs by category in alphabetical order
         userjobsData = (userjobsData as NSArray).sortedArray(using: [NSSortDescriptor(key: "category", ascending: true)]) as! [[String:AnyObject]]

         }
        //Here userjobsData contains data
        print(userjobsData)
     }
     //Here userjobsData is empty
     print(userjobsData)


实际上你的情况发生了什么Firebase获取数据是asynchronous task并且需要一些时间来获取数据,同时您正在阅读您的userjobsData这是空的,因为Firebase请求尚未完成。

您可以做的实际上是在从中获取数据后执行所需的操作firebase .

添加示例代码供您参考。

private func fetchDataFromFirebase(){

  let userDocument = userdb.collection("users").document(userDocumentId)

     var userjobsData = [[String:Any]]()

     userDocument.getDocument { (docums, error)  in

         if let docum = docums, docum.exists {

         //grab all jobs data
         userjobsData = docum.get("jobData") as! [[String:Any]]

         //sort jobs by category in alphabetical order
         userjobsData = (userjobsData as NSArray).sortedArray(using: [NSSortDescriptor(key: "category", ascending: true)]) as! [[String:AnyObject]]

          self.perfomAction(firebaseResult : userjobsData)
          // now pass this data to your need function like
         }

  }
}

private func perfomAction(firebaseResult : [[String:Any]]){
  // perform your job here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Firebase getDocument 函数 (Swift) 中写入变量 的相关文章

随机推荐

  • 更新嵌套字典中的值 - Python

    我创建了一个字典 如下所示 gP dict fromkeys range 6 a None b None c None d None 现在 当我尝试修改一个值时 gP 0 a 1 由于某种原因 所有的值a 不管它们属于哪个键 更改为1 如下
  • 为什么我的 UDP 广播失败?

    我正在尝试发送 UDP 广播 但wireshark 没有报告任何流量 这是执行发送的代码片段 void SendBroadcast String ip 255 255 255 255 int port 30718 String messag
  • 在 shell 脚本中扩展变量

    我有一个需要循环的查询 query select dbserver as server while read dbserver username password dbname type do mysql h dbserver u user
  • 如何使用 VBA 将数据从关闭的工作簿(保持关闭状态)复制到主工作簿中?

    我需要使用 VBA 将数据从关闭的工作簿复制到主工作簿中 而不打开它们 I use Workbooks Open从 4 6 个文件开始 每个需要打开的文件都会大大减慢复制操作的速度 我需要高效的 VBA 代码来复制数据 而无需打开每个文件
  • Azure 存储非经典 (V2) - 如何配置自定义域

    在新的 Azure 门户中 有 2 个存储帐户 非经典帐户和经典帐户 因为我认为经典就是旧版本 所以我选择非经典 问题是 我无法在新门户上配置自定义域 它将我重定向到旧的 azure 门户 manage windowszuare com 问
  • 隐藏包中的模块导入

    我有一个小包 有一些依赖项 例如 pandas 和 gensim 文件结构是这样的 package init py agg clean py In the init py文件 我有import agg clean所以我能够以链式方式访问这些
  • 嵌入式 Python 应用程序中 Py_Finalize 期间发生致命错误

    感谢您的帮助 这个问题的变体已经被问过很多次 但我还没有找到完整的答案 我正在使用 MS MFC 类将嵌入式 Python 3 4 2 添加到用 C 编写的现有模拟器工具中 该应用程序是多线程的 以便用户可以执行Python脚本并与模拟器系
  • 列出 pyspark 中加载的所有其他 jar

    我想查看我的 Spark 上下文正在使用的罐子 我在Scala中找到了代码 spark shell jars master spark datasci 7077 jars opt jars xgboost4j spark 0 7 jar w
  • CFBundleShortVersionString 必须是最多三个非负整数的以句点分隔的列表

    将我的应用程序提交到应用程序商店时 我收到此错误 这是我的 info plist 文件中的相关部分
  • 神经网络需要多少个纪元来学习平方? (包括测试结果)

    好吧 首先我要说的是 我很清楚这取决于很多因素 我正在向有经验的人寻求一些一般准则 我的目标是not制作一个可以为我计算数字平方的神经网络 但我认为这将是一个很好的实验 看看我是否正确实现了反向传播算法 这看起来是个好主意吗 无论如何 我担
  • 多模块 Maven 项目中的 log4j

    如何在多模块 Maven 项目中实现 log4j 我是否将 log4j properties 文件添加到每个子模块的 src main resources 目录中 如果是这样 我是否必须为每个文件附加器指定不同的输出文件 或者有没有一种方法
  • db2 查询时间戳数据类型的奇怪行为

    我想查询 db2 中的时间戳数据类型 我在下面写了查询 Select from sample where LASTMODIFIEDDATE timestamp 2012 04 03 07 59 50 我没有得到上述查询的任何结果 然后我尝试
  • JFreeChart - Java 堆空间问题

    我是第一次使用 JFreeChart 并且使用 TimeSeriesCollection 创建 TimeSeriesChart 我的数据库查询结果集就是全部 大约1000条记录 我在用org jfree date time Minute M
  • 如何为 CMake 构建过程本身添加 add_custom_command() ?

    有什么方法可以执行与 add custom command 等效的操作 当某个文件更改时运行外部脚本 但对于应该在 CMake 脚本执行本身期间运行的内容 即 用于依赖图生成 我们将源代码文件分为多个子库 并且有一些配置文件列出了哪个源文件
  • 如何通过 Plotly 从 Dash 中的回调函数访问 cookie?

    我有一个简单的 Dash 回调函数 如下所示 app callback dash dependencies Output test output children dash dependencies Input test input val
  • WPF MVVM 代码背后的最佳实践

    我是一名使用 MVVM 模式通过 WPF 学习 C 的学生 最近 我一直在研究我的应用程序的艺术 自定义启动屏幕 当我不希望它关闭时 它不应该关闭 我一直在网上搜索一种无需后台代码即可完成此操作的好方法 不幸的是 几天后我仍然没有找到令人满
  • java继承问题-必须在父类中创建空构造函数

    我在 netbeans ubuntu java 标准项目上编程 测试准备 当我创建 AccountStudent java 时出现错误 账户 java public abstract class Account protected doub
  • 使用 JNA 访问包含多个类的 DLL 方法

    我是使用 JNA 从 Java 访问 DLL 的新手 所以如果这对每个人来说都是显而易见的 请原谅我 我需要从 DLL 用 VB 编写 中的类访问方法 并且不能通过仅加载库来完成此操作 因为我看到如何访问其中的类 即该 DLL 名为 CDr
  • Jetpack Compose 不采用 colorScheme

    我有一个用 Jetpack Compose 编写的 Android 应用程序 我正在尝试使用应用程序中定义的 colorScheme 设置图标颜色 但它不起作用 下面是我的代码 Color kt import androidx compos
  • 如何从 Firebase getDocument 函数 (Swift) 中写入变量

    我想读取一个文档 从该文档中获取一个字段 并将一个变量设置为该字段的值 我希望写入在 Firebase getDocument 函数外部声明的变量 实际结果是该变量正在 Firebase getDocument 函数内写入 但在函数外部它为