根据角色显示不同的视图控制器-Firebase、Swift 3

2023-11-30

我正在构建一个非常简单的应用程序,它将用户的报告发送给管理员。到目前为止我已经完成了整个前端。我的菜单可以正常工作,报告顺序也很流畅。现在是我负责后端的时候了。我是一名新的 Swift 开发人员,完全自学(就像你应该的那样:)),但我对一些事情感到困惑。我只需要一些指导,我通过阅读后面的堆栈溢出来寻求建议,但从未提出过问题。所以!我向敬虔的堆栈社区的你们提出的问题是!:

我为用户设置了两个角色..

  1. 普通用户
  2. An admin

我希望能够根据他们在 firebase 中的角色,当他们登录时将他们重定向到各自的视图控制器。现在!我问我的一个朋友,他告诉我这些都可以在同一个应用程序中完成,我不需要为管理员制作不同的应用程序。我猜这是真的,因为我相信他的判断。我正在考虑做 if 检查,即

//If role is = to admin
self.performSegue(admin VC)

//else
self.performSegue(homeScreen)

我遇到问题 1. 分配角色和 2. 从 firebase 访问它!

非常感谢任何见解/提示!

谢谢堆栈溢出大神


这将是一个两步过程

第一步是验证用户身份并检索其用户 uid

Auth.auth().signIn(withEmail: "[email protected]", password: "password", 
  completion: { (auth, error) in

    if error != nil {
        let err = error?.localizedDescription
        print(err!)
    } else {
        print("succesfully authd")
        let uid = auth!.uid

        assignUserRole(uid)     
    }
})

假设您有一个包含附加用户数据的标准用户节点

users
  uid_0
   fav_food: "pizza"
   user_role: "admin"
  uid_1
   fav_food: "tacos"
   user_role: "normal_user"

步骤2:然后将调用assignUserRole函数来获取用户信息并设置UI

function assignUserRole(theUid: String) {

   let thisUserRef = appRef.child("users").child(theUid)
   thisUserRef.observeSingleEvent(of: .value, with: { snapshot in
       let userDict = snapshot.value as! [String: Any]
       let favFood = userDict["fav_food"] as! String
       let userRole = userDict["user_role"] as! String
       print("  \(favFood)  \(userRole")

      if userRole == "admin" {
        //display admin viewController
      } else {
        //display normal user viewController
     }
   })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据角色显示不同的视图控制器-Firebase、Swift 3 的相关文章

  • iOS 应用程序中的谷歌地图实时交通状况?

    如何使用 google 地图 sdk 或 api 在 ios 应用程序中添加当前交通状况 如下图所示 有 javascript api 但我没有找到任何适用于 iOS 应用程序的解决方案 只需在 iOS SDK 中添加一行代码即可启用或禁用
  • 如何在 iOS 上的视图之间进行展开/收缩转换?

    我正在尝试在 iOS 中制作过渡动画 其中视图或视图控制器似乎扩展以填充整个屏幕 然后在完成后收缩回原来的位置 我不确定这种类型的转换的正式名称是什么 但您可以在 iPad 版 YouTube 应用中查看示例 当您点击网格上的搜索结果缩略图
  • 如何在原生 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?

    我正在尝试实现一个通用的可变有序集类型 它需要符合许多协议才能以与 Swift 中的数组和集合相同的方式运行 首先要实现泛型类型元素需要符合Hashable https developer apple com documentation s
  • 平板电脑在第一次单击时悬停,在第二次单击时单击

    发布这个问题主要是希望证实我对该行为的怀疑 从而为其他程序员记录下来 因为我在网上没有找到任何记录 我正在构建一个网站 其导航栏具有以下属性 水平截面是 ul of li 和一些 li li s 两者都有 A n a 元素带您进入该主题 触
  • 如何在文本末尾添加按钮,如 Facebook 的“继续阅读”?

    当状态帖子太长时 Facebook 应用程序会剪切文本并在末尾添加 继续阅读 它如何知道在哪里剪切文本并添加 继续阅读 不仅仅是向 textView 或标签添加按钮 而是如何剪切字符串 例如 在下图中 我将行数限制为 7 我可以在 text
  • Firebase Analytics 服务器端[重复]

    这个问题在这里已经有答案了 Firebase 客户端 JS 支持 Firebase Analytics 在那里 我使用该方法logEvent将我的事件记录到 GA v2 并查看很棒的漏斗图 但是 显然 客户端不会跟踪某些事件 例如数据库事件
  • scrollToRowAtIndexPath:atScrollPosition:动画滚动太慢

    基于分页 UIScrollView 的页面更改 我正在调用scrollToRowAtIndexPath atScrollPosition animated到所显示的该页面的表详细信息 void scrollViewDidScroll UIS
  • firestore是否支持事务中的集合级锁定?

    我曾在 mongodb 中工作 它不是 sql 数据库 它仅支持文档级锁 由于firestore也不是sql数据库 它支持文档级锁还是允许集合级锁 唯一的锁定操作是文档锁定交易 https firebase google com docs
  • 即席分发失败

    我在一家大公司工作 正在开发一个适用于 iOS 5 的 iOS 应用程序 分发应用程序的唯一方式是通过临时部署 我拥有自己的服务器已经有一段时间了 由 o2switch 法国托管商 托管 当我开始开发时 我们使用它来部署应用程序以进行 Be
  • Firebase Cloud Messaging 是否需要身份验证?

    我有一个带有自定义用户身份验证的 php 服务器 我正在尝试与 Firebase 创建聊天 在阅读文档后 我仍然很困惑 我需要为 Firebase 验证我的用户 如果是这样 我应该使用 signInWithCustomToken 来完成吗
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 在 iPhone 和 Cocos2d 中从类类型(+)方法访问对象?

    我有一个类方法 在其中创建并返回类对象 但我想访问同一类中该对象的某些属性 作为一个类方法 我无法在 h 文件中声明该变量 然后在其他方法中访问它 以下是代码 我如何在下面的实例方法中访问 backsprite 或 hudlayer 对象的
  • SDWebImage 显示缓存中图像的占位符

    在 iOS 5 1 项目 iPad 中使用 SDWebImage 3 我们展示相当大的图像 700x500 并且我们有很多图像 1000 我们预取图像并缓存到磁盘 然后允许用户浏览它们 效果很好 除了当您浏览图像时 您总是会看到占位符显示一
  • 带约束的 Swift 动画

    是否可以通过改变约束来制作 UIView 动画 基本上 我想要动画myv UIView 具有 x y 高度和宽度约束 使用 UIView animateWithDuration 1 5 通过改变旧的限制 是的 这是可能的 你可以这样做 fu
  • UINavigationController 在后退按钮单击时向下滚动

    我正在开发一个带有多个导航控制器的 iPhone iPad 应用程序 当我在设备处于横向模式时单击视图的后退按钮时 前一个视图会垂直滚动到屏幕中 而不是像往常一样水平滚动 推送动画始终水平工作 正如它应该的那样 是什么导致了这个奇怪的问题
  • iOS 11 getUserMedia 不起作用?

    苹果公司发表声明称getUserMedia将在 iOS 11 上完全正常运行 安装 iOS 11 Beta 版本 5 后 我确实收到一条消息 表明我的网站请求访问我的相机和麦克风 但似乎是这样的 video src window URL c
  • 使用 NSOutlineView 作为文件系统目录浏览器的 Swift 代码

    我已经在这段 Swift 代码上苦苦挣扎了一段时间 但没有发现问题 代码 下面应该提供文件目录作为 NSOutlineView 的数据源 GUI 非常简单 只是一个带有 NSOutlineView 和 OutlineViewControll
  • 更新查询时 ios 中出现“数据库锁定”错误

    我正在使用下面的代码更新查询 using sqlite 但我越来越 database is locked error 我尝试搜索一些 SO 链接 建议关闭数据库 但我再次执行此操作时遇到相同的错误 我已经提到过代码中出现错误的地方 cons
  • NSURLConnection 是否自动保留从服务器发送的 cookie?

    我从 ios 登录到我的龙卷风后端并发回 secure cookie 我注意到只要验证我设置的 secure cookie 我还可以请求其他信息 NSURLConnection 会保留 cookie 多久 或者关闭应用程序后 cookie
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer

随机推荐

  • 如何在iOS中动态解析JSON

    我们使用了第三方服务 它提供了一个 JS 文件 js文件发起http请求 得到一个json 我们解析json 得到了我们想要的内容 但是json格式总是在变化 有没有办法解析 json 但不更新我们的应用程序 不断更改架构听起来非常愚蠢 但
  • 使用 IN 和 python 列表构建 SQL 查询字符串

    我建立了一个对熊猫感兴趣的价值观列表 table1 pd read csv logswithIPs csv cips data dash ip unique tolist print cips 10 111 111 111 111 123
  • Hibernate、iBatis 还是其他?

    在我的项目中 我需要在运行时在数据库之间切换 我尝试使用 Hibernate 但陷入了一个需要将对象与数据库中的表映射的地方 问题是 我有几个带有前缀的表 documents2001 documents2002 据我所知 我无法在运行时将类
  • 如何用 R 绘制风向和风速(速度图)

    基本上我有两个矩阵 u和v 的列表 其中包含经度和纬度方向的风速 以及包含坐标的向量x和y 我想制作一张带有指向结果方向的箭头的地图 其大小与风速成正比 这个问题之前有人问过 http www mail archive com 电子邮件受保
  • plotly.js 中是否可以有水平颜色条

    我正在plotly js 中使用等值线图 有没有办法让颜色条比例在图表底部水平显示 而不是沿右侧或左侧垂直显示 作为参考 请查看 Plotly 站点上给出的第一个示例https plot ly javascript choropleth m
  • dw、db 和 是什么意思? (问号)TASM 结构中的意思是什么?

    我是装配新手 现在我想弄清楚dw db and 意思是在一个struc 例如这里 struc segment descriptor seg length0 15 dw base addr0 15 dw base addr16 23 db f
  • 如何让 R 接受自签名证书

    我有使用 RGoogleAnaytics 包的以下代码 require RGoogleAnalytics client id lt XX client secret lt YY token lt Auth client id client
  • 选择 Linq 分组依据的特定列

    我有一个嵌套的 ListView 有点像这个 http mattberseth com blog 2008 01 building a grouping grid with html 以及以下 Linq 查询 var query from
  • PHP foreach() 仅返回最后 50 项

    我当前正在使用以下 PHP 代码来返回 htm 文件的输出并对其进行格式化
  • 我可以从 .gradle 文件中的 groovy 方法调用 gradle 任务吗?

    我在 gradle 中有一个非常规的构建脚本 它可以循环编译项目 更改为标准 gradle 构建需要几周的时间 所以现在不会发生这种情况 问题是我想停止在脚本中使用 ant 并转而仅使用 groovy gradle 问题是如何更改复制等任务
  • 使用 VBA for Excel 从大范围单元格中删除“额外”空格(超过 1 个)的更快方法

    如何从包含文本字符串的大范围单元格中更快地删除多余空格 假设有 5000 个细胞 我尝试过的一些方法包括 For Each c In range c Value Trim c Value Next c and For Each c In r
  • 你会如何解析 Markdown? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 编辑 我最近了解了一个名为
  • C# 停止执行直到事件发生

    我需要停止执行程序 直到用户单击按钮 我正在进行离散事件模拟 现在的目标是提供简单的图形来说明情况 当模拟达到值得展示的事件时 将调用绘制情况的方法 我需要该方法在用户单击按钮之前不跳回到模拟核心 只有在到达有趣的点时才再次调用 您可以创建
  • ANTLR 中的浮点文字和范围参数

    我正在开发 D 语言的解析器 当我尝试添加 切片 运算符规则时遇到了麻烦 你可以找到它的ANTLR语法here 基本上问题是 如果词法分析器遇到这样的字符串 1 2 它就会完全丢失 并且最终成为单个浮点值 因此像 a 10 这样的字符串的后
  • 对现有文件多次运行 blob 存储触发器

    我一直在使用一种方法 通过进入我的存储帐户并删除 azure webjobs host gt blobreceipts gt 函数应用程序名称 中找到的 blob 对相同文件多次运行存储触发器 gt Blob 触发器名称 我认为这就是我需要
  • 从 YouTube 数据 API 搜索查询中排除直播活动

    我正在使用 google api php client https github com google google api php client 仅搜索和检索 YouTube 上的视频 我知道您可以将名为 type 的查询标记设置为视频
  • “运算符不存在:整数=?”使用 Postgres 时

    我有一个简单的 SQL 查询 在 go 的 database sql 包提供的 QueryRow 方法中调用 import github com codegangsta martini github com martini contrib
  • 场景和步骤“获取最后更改”问题

    我有下表抽象了一些场景及其步骤 按 START DATE desc 排序 SCENARIO KEY STEP KEY START DATE END DATE PREVIOUS SCENARIO KEY PREVIOUS STEP KEY 1
  • 如何使用java流从网络获取PDF文件

    例如 我需要从网络下载 PDF 文件http www math uni goettingen de zirkel loesungen blatt15 loes15 pdf这个链接 我必须使用 Streams 来做到这一点 对于图像 它对我来
  • 根据角色显示不同的视图控制器-Firebase、Swift 3

    我正在构建一个非常简单的应用程序 它将用户的报告发送给管理员 到目前为止我已经完成了整个前端 我的菜单可以正常工作 报告顺序也很流畅 现在是我负责后端的时候了 我是一名新的 Swift 开发人员 完全自学 就像你应该的那样 但我对一些事情感