【问题标题】:Value of type 'error' has no member 'userinfo'“错误”类型的值没有成员“用户信息”
【发布时间】:2017-05-13 04:39:22
【问题描述】:

我的代码如下:

if signupMode {
    let user = PFUser()
    user.username = emailTextField.text
    user.email = emailTextField.text
    user.password = passwordTextField.text
    user.signUpInBackground(block: {
       (success, error) in

if error != nil {

    let displayErrorMessage = "Please try again later"

    if let errorMessage = error.UserInfo["error"]? as String {
        displayErrorMessage = errorMessage                
    }

self.createAlert(title: "Error", message: "Parse Error")
}

我只是不断收到错误

“'error'类型的值没有成员'userinfo”

我能做些什么来解决这个问题?我正在使用 Xcode 8

【问题讨论】:

  • if signupMode { let user = PFUser() user.username = emailTextField.text user.email = emailTextField.text user.password = passwordTextField.text user.signUpInBackground(block: { (成功,错误) in if error != nil { if let errorMessage = error.UserInfo["error"]? as String { // displayErrorMessage = errorMessage } self.createAlert(title: "Error", message: "Parse Error") }
  • 抱歉,我不确定这是否有帮助!
  • if let error = error as? NSError { ... use error here }

标签: swift xcode swift3


【解决方案1】:

如果您仍然收到此错误,请尝试此代码。强制解包错误为 NSError。

if let errorMessage = (error! as NSError).userInfo["error"] as? String {
    displayErrorMessage = errorMessage
}

【讨论】:

    【解决方案2】:

    通过您的剪辑无法确定error 是什么以及它是否应该有一个名为UserInfo 的成员。请提供更多代码...

    我假设它是NSError?在这种情况下,它将error.userInfo 作为成员名称。 (看外壳)

    除此之外,您的代码将无法编译,因为您声明了let displayErrorMessage,但在 if 中对其进行了赋值。您需要将其更改为 var displayErrorMessage 才能执行此操作。

    试试这个:

    user.signUpInBackgroundWithBlock {
        (succeeded: Bool!, error: NSError!) -> Void in
        if error == nil {
          // Perform a segue, show a message or whatever you want
    
        } else {
          let errorString = error.userInfo["error"] as NSString
          // Show the errorString somewhere and let the user try again.
        }
      }
    

    【讨论】:

    • 我也把 let 改成了 var!谢谢!
    • 我根据您的代码更新了我的答案。这有帮助吗?
    • 你需要从 Swift 3 Error 转换为 NSError
    • 试试((error as Any) as! NSError).userInfo["error"]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多