iOS如何从解析Swift 4中获取值“布尔”

Posted

技术标签:

【中文标题】iOS如何从解析Swift 4中获取值“布尔”【英文标题】:iOS How to fetch value "Boolean" from parse Swift 4 【发布时间】:2018-04-12 06:35:27 【问题描述】:

我构建了应用程序,我需要在其中检查用户是否验证了电子邮件。 我获取数据的代码:

  let query:PFQuery = PFQuery(className: "_User");
        query.whereKey("objectId", equalTo: PFUser.current()!.objectId!)
        query.findObjectsInBackground  (object, error) in
            if !(error != nil) 
                let user = PFUser.current()
                let emailVerified = user!["emailVerified"] as! Bool
                print("emailVerified \(emailVerified)")
            
        

我有错误:

线程 1:致命错误:在展开可选值时意外发现 nil

更新:

所以在我的表中我的值是“false”

当代码在控制台中运行时,我收到值“true”

【问题讨论】:

你能打印user 你从用户那里得到 Int!["emailVerified"]? 是的,我收到 emailVerified = 0; Int,但我喜欢 Int 获取 @Andrew 请找到我的答案 【参考方案1】:

您也可以为通用术语实现以下扩展,

extension Integer 
    var boolValue: Bool  return self != 0 

然后像这样使用它,

let success = user!["emailVerified"].boolValue

更新

你也可以这样做,

let success = (user!["emailVerified"] as NSNumber).boolValue

另一种选择是这样的,

extension Bool     
    init(_ number: Int) 
        self.init(number as NSNumber)
    

然后得到它,

let success = Bool(user!["emailVerified"] as NSNumber)

尝试一下,如有任何疑问,请告诉我。

【讨论】:

它的工作并不理想,因为在表中我的值为 false,但我获取的值为 true 究竟是什么问题? @PLL 在上面我写了,有什么问题 你能打印这个吗? user!["emailVerified"],是 0 还是 1? emailVerified = 0;【参考方案2】:

用途:

if let isVerify = user!["emailVerified"] as? NSNumber 
    let emailVerified = isVerify.boolValue

【讨论】:

无法使用“(Any!)”类型的参数列表调用“Bool”类型的初始化程序

以上是关于iOS如何从解析Swift 4中获取值“布尔”的主要内容,如果未能解决你的问题,请参考以下文章

如何从开关状态获取布尔值?

从推送通知 iOS Swift 4 中获取值

iOS如何获取下一行解析Swift

如何在 func swift 4 中编写关于比较布尔值的 func

如何在 Swift 4 中从 WKWebView 获取 cookie 值?

使用 Swift 4 Decodable 将字符串 JSON 响应转换为布尔值