使用 localizable.string 自定义解析错误代码?

custom Parse error code with localizable.string?

我正在尝试为解析的 "invalid login parameters (Code: 101, Version: 1.8.1)" 创建自定义字符串。以下是在自定义警报视图中显示此错误代码的代码:

       PFUser.logInWithUsernameInBackground(userName, password: passWord) {
            (user, error: NSError?) -> Void in
            if user != nil || error == nil {
                dispatch_async(dispatch_get_main_queue()) {
                    self.performSegueWithIdentifier("loginSuccess", sender: self)
                }

            } else {
               dispatch_async(dispatch_get_main_queue()) {
                self.activityIND.stopAnimating()
                let errorView:String = error!.userInfo!["error"] as! String
                self.failedMessage(errorView)
            }
         }
      }
   }

    func failedMessage(theMessage: String){
        let myAlert = SCLAlertView().showError("Woah There", subTitle: theMessage, closeButtonTitle: "Got It")
        myAlert.alertview.contentView.backgroundColor = UIColor(red:1.0, green:0.18, blue:0.18, alpha:1.0)
        myAlert.alertview.circleBG.backgroundColor = UIColor(red:1.0, green:0.18, blue:0.18, alpha:1.0)
        myAlert.alertview.labelTitle.textColor = UIColor.whiteColor()
        myAlert.alertview.contentView.layer.borderColor = UIColor(red:1.0, green:0.18, blue:0.18, alpha:1.0).CGColor
        myAlert.alertview.viewText.textColor = UIColor.whiteColor()
        myAlert.alertview.viewText.backgroundColor = UIColor(red:1.0, green:0.18, blue:0.18, alpha:1.0)
    }

现在我创建了一个 localizable.strings 文件并添加了以下字符串

"error" = "something isn't right, check the username and password fields"

现在我几乎可以肯定这是不正确的格式,因为我以前从未使用过可本地化的字符串,但您明白了。我试图用我的自定义消息伪装那个普通的 "invalid login parameters" 消息。使用我的 localizable.strings 文件,我该怎么做?

假设您的所有其他本地化配置 have been set up—您需要执行如下操作:

    PFUser.logInWithUsernameInBackground(userName, password: passWord) {
        (user, error: NSError?) -> Void in
        if user != nil || error == nil {
            dispatch_async(dispatch_get_main_queue()) {
                self.performSegueWithIdentifier("loginSuccess", sender: self)
            }

        } else {
            dispatch_async(dispatch_get_main_queue()) {
                self.activityIND.stopAnimating()

                if let message = error?.userInfo?["error"] as? String
                    where message = "invalid login parameters" {
                    let localizedMessage = NSLocalizedString(message, comment: "")
                    println(localizedMessage)
                    self.failedMessage(localizedMessage)
                }
            }
        }
    }
}

然后只需将 Localizable.strings 中的行更改为:

"invalid login parameters" = "something isn't right, check the username and password fields";

… 注意它使用特定的 Parse 错误消息(作为键)来查找您的 localized 版本——并且不要忘记末尾的分号。

警告:这不是我推荐的,因为 Parse 提供的错误消息比说错误代码更容易更改联系。最好检查一下,减少不必要的维护空间。