firebase 和 swift - 此类不符合键值编码 -----

2023-12-20

我知道还有其他类似的问题,但我认为我的问题是如何访问 firebase 而不是插座,因为我的错误位于 @IBAction 函数中,该函数可以在错误发生之前调用。

@IBAction func sign_in_out_tapped(sender : UIButton) {
    if let op_user = user {
        if (op_user.user_ref?.valueForKey("current_status"))! as! String == "OUT" {
            let sign_in_time = NSDate()
            op_user.user_ref?.childByAppendingPath("logins").updateChildValues([String(op_user.user_ref?.valueForKey("num_of_logins")! as! Int + 1): ["sign_in_time": sign_in_time]])
            signinout = SignInOutModel(sign_in_time: sign_in_time)

            op_user.user_ref?.updateChildValues(["current_status": "IN"])
        } else {
            signinout!.sign_out_time = NSDate()
            op_user.user_ref?.childByAppendingPath("logins").childByAppendingPath(String(user?.user_ref?.valueForKey("num_of_logins"))).updateChildValues(["sign_out_time": signinout!.sign_out_time!])

            signinout!.duration = (op_user.user_ref?.childByAppendingPath("logins").childByAppendingPath(String(user?.user_ref?.valueForKey("num_of_logins"))).valueForKey("sign_in_time")?.timeIntervalSinceNow)!
            op_user.user_ref?.childByAppendingPath("logins").childByAppendingPath(String(user?.user_ref?.valueForKey("num_of_logins"))).updateChildValues(["duration": signinout!.duration])
            op_user.user_ref?.updateChildValues(["total_hours": (Double((op_user.user_ref?.valueForKey("total_hours"))! as! NSNumber) + signinout!.duration)])
        }
} else {
        let sign_in_alert = UIAlertController(title: "Sign in.", message: "What is your first and last name?", preferredStyle: UIAlertControllerStyle.Alert)

        sign_in_alert.addTextFieldWithConfigurationHandler { textField in
            NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(MainViewController.handleTextFieldTextDidChangeNotification(_:)), name: UITextFieldTextDidChangeNotification, object: textField)
        }

        func removeTextFieldObserver() {
            NSNotificationCenter.defaultCenter().removeObserver(self, name: UITextFieldTextDidChangeNotification, object: sign_in_alert.textFields![0])
        }

        let cancel_action = UIAlertAction(title: "Cancel", style: .Cancel) { action in
            print("Sign In Cancel Button Pressed")
            removeTextFieldObserver()
        }

        let save_action = UIAlertAction(title: "Save", style: .Default) { action in
            print("Sign Out Save Button Pressed")

            let textField = sign_in_alert.textFields![0] as UITextField

            if let user_name = textField.text {
                var not_found = false

                self.students_ref.childByAppendingPath(user_name).observeEventType(.Value, withBlock: { snapshot in

                    if (snapshot.value is NSNull) {
                        not_found = true
                    } else {
                        self.user = User(user_name: user_name)
                        self.user?.user_ref = self.students_ref.childByAppendingPath(user_name)
                        self.refresh_user_name_label()
                    }
                })

                if !not_found {
                    self.mentors_ref.childByAppendingPath(user_name).observeEventType(.Value, withBlock: { snapshot in

                        if (snapshot.value is NSNull) {
                            not_found = true
                        } else {
                            self.user = User(user_name: user_name)
                            self.user?.user_ref = self.mentors_ref.childByAppendingPath(user_name)
                            self.refresh_user_name_label()
                        }
                    })
                } else {
                    self.error_message("User not found. Please update Firebase.")
                }
            } else {
                self.error_message("Could not sign in.")
            }

            removeTextFieldObserver()
        }

        save_action.enabled = false

        AddAlertSaveAction = save_action

        sign_in_alert.addAction(cancel_action)
        sign_in_alert.addAction(save_action)

        self.presentViewController(sign_in_alert, animated: true, completion: nil)

        if let _ = user {
            let sign_in_time = NSDate()
            signinout = SignInOutModel(sign_in_time: sign_in_time)
        }
    }

    refresh_sign_in_out_button()
}

我相信错误位于顶部,它显示“op_user.user_ref?.valueForKey("current_status"))! as String == "OUT"”,因为错误不仅显示,

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Firebase 0x7fa12e0b5530> valueForUndefinedKey:]: this class is not key value coding-compliant for the key current_status.'

但是当通过调试器时,程序直到“valueForKey(“current_status”)”才终止。

任何帮助,将不胜感激!谢谢你!

编辑:我的火力基地:

{
  "mentors" : {
    "Ash Dreyer" : {
      "current_status" : "IN",
      "num_of_logins" : 0,
      "total_hours" : 0
    },
    "Donald Pinckney" : {
      "current_status" : "OUT",
      "num_of_logins" : 0,
      "total_hours" : 0
    },
    "Jasmine Zhou" : {
      "current_status" : "OUT",
      "num_of_logins" : 0,
      "total_hours" : 0
    },
    "Michael Corsetto" : {
      "current_status" : "OUT",
      "num_of_logins" : 0,
      "total_hours" : 0
    }
  },
  "students" : {
    "Bryton Moeller" : {
      "current_status" : "OUT",
      "num_of_logins" : 0,
      "total_hours" : 0
    },
    "Kelly Ostrom" : {
      "current_status" : "OUT",
      "num_of_logins" : 0,
      "total_hours" : 0
    },
    "Kyle Stachowicz" : {
      "current_status" : "OUT",
      "num_of_logins" : 0,
      "total_hours" : 0
    },
    "Wesley Aptekar-Cassels" : {
      "current_status" : "OUT",
      "num_of_logins" : 0,
      "total_hours" : 0
    }
  }
}

EDIT:

我的项目的目标是创建一个登录/退出应用程序。我的导师希望其他人能够查看某人是否登录,并希望跟踪某人总共登录了多长时间(例如他们在商店的停留时间是否达到 100 小时之类的。)


您的问题是您尝试访问 Firebase 参考数据的方式。 valueForKey 不是正确的方法。您需要执行以下两件事之一:

  1. 首先将 firebaseSnap.value 转换为字典,然后使用 dict[key] 语法。
  2. Snapshot.childSnapshotForPath("current_status").value

我推荐第 2 种方法,因为这是最干净的方法。但是,如果您需要经常访问引用,您可能需要转换为字典,因为这样访问它看起来会更好。

注意:这两者都需要 Firebase 事件侦听器来获取 Firebase 快照。

如果您有任何疑问,请告诉我,祝您好运!

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

firebase 和 swift - 此类不符合键值编码 ----- 的相关文章

  • 从其超级视图 iOS 7 问题中获取 UITableViewCell

    我的单元格中几乎没有具有手势识别器实例的 UI 对象 我需要获取按压对象所在的单元格 我有下面的方法来获取它 但它只在 iOS 7 之前有效 UITableViewCell cell UITableViewCell sender view
  • NSRegularExpression 中的命名捕获组 - 获取范围组的名称

    苹果表示 NSRegularExpression 基于 ICU 正则表达式库 https developer apple com library ios documentation Foundation Reference NSRegula
  • IOS:从故事板中的原型单元中触发多个segues

    有没有办法将原型单元连接到不同的场景 并在 didSelectRowAtIndexPath 方法上调用 self PerformSegueWithIdentifier NAMEOFTHESEGUE sender self 我似乎无法将多个
  • iOS 键盘颜色变化 - 键盘外观深色不粘

    在我们的应用程序中 我们将键盘外观设置为深色 正如预期的那样 这会产生一个黑色键盘 但是 如果显示键盘 并且我们按主页按钮 然后返回应用程序 键盘会变成白色 如图所示 有什么想法吗 这可能与键盘是全局对象这一事实有关 在任何给定时间 内存中
  • 仅 iOS 7 应用程序在启动时崩溃

    我最近将我的 xcode 项目更改为仅支持 iOS 7 而不支持 iOS 5 应用程序启动后进行此更改后 我会在控制台中收到此消息 UICachedDeviceWhiteColor shadowColor unrecognized sele
  • 在 Swift 中,当使用“[weak self] in”时,当嵌套在另一个闭包中时我是否应该加倍它[重复]

    这个问题在这里已经有答案了 在 Swift 中 当使用 weak self in 当嵌套在另一个闭包中时 我应该将其加倍吗 Example override func viewDidLoad super viewDidLoad makeAP
  • XCode 卡住了“复制符号文件”

    更新到最新版本 6 1 b2 后 Xcode 不再在设备上编译和运行项目 并显示 正在复制符号文件 几个小时 对于这个问题有什么想法或可能的解决方法吗 尝试使用另一根电缆或 USB 端口 其他 USB 端口为我修复了它 并在找到此 Twit
  • Xcode:libpods.a 为红色

    有人知道为什么吗 我正在使用 SWRevealViewController 到目前为止它一直在工作 我正在使用工作区 并且我已经研究过其他文章 但到目前为止没有任何效果 它不会引发错误 但是当我运行程序时 它不会加载任何内容 因为 SWRe
  • Modal UINavigationController - 我无法停止旋转

    我正在使用故事板 并且在 UITabBarController 中嵌入了 UINavigationController 我推送一个视图控制器 然后从这个视图控制器中我呈现一个带有 UIViewController 的 MODAL UINav
  • .m 文件中的空 @interface 声明有何用途?

    我启动了一个新的 iOS 5 项目 并注意到每个 m 文件顶部都有一些新内容 import HomeViewController h interface HomeViewController end implementation HomeV
  • 是否可以在不使用 LibGDX 的情况下从 RoboVM 访问 OpenGL ES?

    是否可以从 RoboVM 访问 iOS 上的 OpenGL ES不使用 LibGDX 如果是的话 有什么有用的参考吗 我唯一能找到的是两年多前的这个超级简单的演示 http robovm com ios opengles in java o
  • 如何在 Objective-C 中运行时查找字符串常量?

    我的公司开发了一个广告 SDK 可以协调其他广告网络 在运行时 它通过使用检查其他广告网络是否存在NSClassFromString 并发送这些类消息 如果存在 这对于 Objective C 对象来说效果很好 但是如何在运行时加载字符串常
  • 在特定点停止 CABasicAnimation

    我正在使用创建的旋转动画CABasicAnimation 它旋转一个UIView超过2秒 但我需要能够阻止它UIView被感动了 如果我删除动画 视图将处于与动画开始之前相同的位置 这是我的动画代码 float duration 2 0 f
  • 在 iOS 和 Android 版 Google 地图上突出显示国家/地区

    我正在尝试在地图上突出显示国家 地区 对于iOS我发现很少有演示 Demo1 http sugartin info 2012 02 13 adding overlays on mkmapview using mkpolygon mkpoly
  • Firebase API 密钥限制不适用于 Android 应用程序包名称和 SHA1 指纹

    我们正在使用 Google Firebase 获取我们应用程序的 CrashLytics 数据 以及通过google services json文件被提出作为一个安全问题 因为应用程序 apk 文件可以被逆向工程来获取该文件 然后攻击者可以
  • iOS 7,搜索模式下范围栏变黑

    我使用嵌入到 UiTableViewController 的 UISearchDisplayController 在我的表格视图中创建一个搜索栏 但是 如果我设置搜索栏的背景图像 则范围栏不会在搜索模式下显示 而是显示黑条 这很奇怪 因为它
  • 为什么UICollectionViewCell的outlet为nil?

    我在 Interface Builder 中创建了一个自定义 UICollectionViewCell 将其上的视图绑定到类 然后当我想使用字符串并将其设置为字符串上的标签时 该标签具有 nil 值 override func viewDi
  • 在 Swift 中监听 stdin

    目前 我正在尝试在我的 swift 应用程序中监听来自命令行的用户输入 我知道readLine 方法 但它并不真正符合我的需求 我想监听在命令行上插入的数据 就像用户在终端内按下 向上键 一样 类似于 Node js 中可以完成的事情 st
  • 当应用程序置于后台时,GCD 分派操作未运行

    我启动了一种方法 本质上是一个无限循环 使用dispatch queue create进而dispatch async 然后代码循环位于分派块内 循环完美运行 但是 当应用程序进入后台时 它会暂停 然后当应用程序进入前台时它会重新启动 我怎
  • 如何解决 Xcode 7 中的 No Type or Protocol Named 错误?

    我试图passing从第二个开始的值class我正在使用的头等舱protocol and delegate过程 每当我运行我的程序时 我都会遇到以下问题 No Type or Protocol Named locateMeDelegate

随机推荐

  • 灵活数字格式

    我想将数字格式化为印度格式 例如 x 123456 应格式化为 1 23 456 我怎样才能在Flex中做到这一点 Thanks 使用数字格式化程序
  • 了解 HKSourceQuery 或一般来源的结果

    我刚刚做了一个 HKSourceQuery 并得到了一些结果 当我做一个println结果 我得到了这个
  • 在 Ruby 中解析非常大的 JSON 文件的正确方法是什么?

    我们如何在 Ruby 中解析 json 文件 require json JSON parse File read data json 如果文件非常大并且我们不想立即将其加载到内存中怎么办 那么我们该如何解析它呢 既然您说不想立即将其加载到内
  • 带智能感知的内置 C#/VB.Net 编辑器 - Roslyn、VSTA 还是其他?

    我需要在我的应用程序中提供脚本功能 允许客户使用我们的对象模型扩展其功能 我希望提供某种带有智能感知的集成 C VB Net 编辑器 但在查看 AvalonEdit 和 ScintillaNet 等产品后 它们似乎并没有提供真正的代码完成功
  • Node JS 覆盖标准模块

    朋友问了一个有趣的问题 我尝试了一些方法但无济于事 有没有办法覆盖 Node JS 模块 例如 我想重写 readFile 函数以使用 S3 存储桶而不是文件系统 IE var fs require fs fs readFile my te
  • 表单元格子视图迭代未找到 TextField

    我创建了一个表格 其中每个单元格都包含一个文本标签和一个文本字段 我正在添加文本字段 cell addSubview passwordField 从视觉角度来看 它们出现并且可以编辑 等等 当我尝试从文本字段检索输入的值时 就会出现问题 我
  • PHP 只允许在表单中选择一个单选按钮

    一个非常基本的问题 如何只允许选择单选按钮列表中的一个选项
  • 通用实体基类

    我刚刚读过一篇关于通用实体基类的文章 简单地说 如果我没有错的话 后面的主要思想是在一个接口中收集所有通用的 非实体特定的字段 而不是在主要实体中实现它 这将是一篇 TL DR 让我们看一些代码 这是基本实体接口及其对另一个接口的通用实现
  • 使用 JavaScript 和 JSON 在 Web 应用程序中进行本地化

    我正在尝试设置一个脚本来自动本地化 Web 应用程序 由于Web应用程序旨在使用HTML5的离线缓存功能 因此它需要能够离线工作 因此 在我看来 JavaScript 是最好的选择 我更喜欢将所有本地化的所有字符串放在一个 JSON 文件中
  • Lucene实体提取

    给定实体术语的有限字典 我正在寻找一种使用 Lucene 进行智能标记的实体提取的方法 目前我已经能够将 Lucene 用于 搜索具有一定模糊性的复杂短语 突出显示结果 但是 我不知道如何 获取匹配短语的准确偏移量 为每场比赛进行特定于实体
  • 改进了 Google Chrome 上已安装 Web 应用程序的添加到主屏幕 (WebAPK) 图标和名称,清单更新后未升级

    我有一个网站 满足 Android 版 Google Chrome 的 改进的 添加到主屏幕 A2HS 功能的所有先决条件 我可以安装该应用程序 并形成一个 APK 并将其安装在设备上 并且主屏幕上会显示图标 In the Google 开
  • JavaScript 中(值不等值)是什么意思?

    我在polyfill中看到了这些片段this https developer mozilla org en docs Web JavaScript Reference Global Objects String repeatMDN 文档 C
  • GAE 上的 REST,使用什么实现?(RESTlet、jersey、其他......)

    有人在 GAE 上使用 REST 的经验吗 也许您可以为此建议一些轻量级 REST 实现 我发现RESTlet说他们有GAE优化的实现 RESTlet GAE http blog noelios com 2009 04 11 restlet
  • 如何在Linux上读取RTS/CTS引脚的值?

    我想知道我的 Linux 机器上串行端口上的 RTS CTS 引脚的状态 另外 由于我使用的是 dev ttyUSB0 相同的机制会起作用吗 问候 阿卡什 通常建议使用termios http linux die net man 3 ter
  • 如何在 R 中绘制具有复数的函数?

    我想在 R 中绘制以下函数 f w 1 1 5 e iw 其中 i 是 1 的平方根 R 可以在绘图中处理复数吗 这应该可以帮助您入门 主要是通过演示 R 用于表示复数和指数函数的符号 f lt function x 1 1 5 exp 0
  • 这个运算符在 django `reduce(operator.and_, query_list)` 中意味着什么

    我正在读这个问题 使用 args 和 kwargs 动态构建 Django 过滤器查询 https stackoverflow com questions 8510057 constructing django filter queries
  • ElasticSearch 的环回连接器

    npm 上至少有两个不同的包可用 环回连接器弹性搜索 https www npmjs com package loopback connector elastic search and 环回连接器 es https www npmjs co
  • 将图像旋转 3*Double.pi/2 使图像不出现(swift3)

    尝试将图像方向旋转 270 度 我可以旋转 90 度并且图像出现 但是当将图像旋转 270 度时什么也没有发生 我添加了两张 90 度和 270 度命令的图片 以使事情更加清晰 extension CIImage var image UII
  • 将兄弟姐妹分组到一个 div 中

    我在一家公司工作 该公司使用编码非常奇怪的电子商务解决方案 我无法直接访问电子商务商店的代码 因为它是由该特定公司托管的 我会废除整个系统 但客户相当依恋它 这就是他们想要的 这是我必须处理的内容 tbody tr td class Pro
  • firebase 和 swift - 此类不符合键值编码 -----

    我知道还有其他类似的问题 但我认为我的问题是如何访问 firebase 而不是插座 因为我的错误位于 IBAction 函数中 该函数可以在错误发生之前调用 IBAction func sign in out tapped sender U