火力基地迅速

编程入门 行业动态 更新时间:2024-10-13 12:18:33
本文介绍了火力基地迅速-此类不符合密钥的键值编码要求-----的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我知道还有其他类似的问题,但是我认为我的问题出在我访问Firebase的方式而不是出口上,因为我的错误在@IBAction函数中,可以在发生错误之前调用它.

I know there are other questions like this but I think my problem is with how I'm accessing firebase and not an outlet because my error is in an @IBAction function that is able to be called before the error happens.

@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",因为错误不仅表明,

I believe the error is at the top where it says "op_user.user_ref?.valueForKey("current_status"))! as String == "OUT"" because not only does the error say,

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")"才终止.

but when going through the debugger, the program didn't terminate until "valueForKey("current_status")".

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

Any help would be appreciated! Thank you!

我的火力地堡:

{ "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 } } }

我的项目的目标是创建一个登录/注销应用程序.我的指导者希望其他人能够查看某人是否已登录,并希望跟踪某人总共登录了多长时间(例如,他们在商店或其他地方已达到100小时).

The goal of my project is to create a sign in/out app. My mentor wants others to be able to see if someone is signed in or not and wants to track how long in total someone has been signed in (like if they have reached 100 hours at the shop or something.)

推荐答案

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

Your problem is the way you are trying to access the data of your Firebase reference. valueForKey isn't the right way to do it. You need to do one of two things:

  • 首先将您的firebaseSnap.value转换为字典,然后使用dict [key]语法.
  • Snapshot.childSnapshotForPath("current_status").value
  • 我建议使用数字2作为最干净的方法.但是,如果您需要大量访问引用,则可能需要转换为字典,因为那样访问会更好.

    I would recommend number 2, as the cleanest way to do it. But if you need to access the reference a lot, you may want to cast to dictionary because accessing it will look nicer that way.

    注意:这两个都需要firebase事件监听器来获取firebase快照.

    NOTE: Both of these require a firebase event listener to get the firebase snapshot.

    让我知道您是否有任何疑问,祝您好运!

    Let me know if you have any questions, and good luck!

    更多推荐

    火力基地迅速

    本文发布于:2023-11-26 20:36:19,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1635105.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:火力   基地

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!