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

时间:2015-08-26 00:16:18

标签: ios swift localization internationalization

我正在尝试为解析"无效的登录参数(代码:101,版本:1.8.1)和#34;创建自定义字符串。 。以下是在自定义警报视图中显示此错误代码的代码:

       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"

现在我几乎可以肯定这是不正确的格式,因为我之前从未使用过可本地化的字符串,但是你明白了。我试图掩盖那些简单的"无效的登录参数"我的自定义消息。使用我的localizable.strings文件,我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

假设您有其他所有本地化配置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错误消息(作为键)来查找本地化的版本 - 并且最后不要忘记分号。

警告 :这不是我建议的,因为Parse提供的错误消息更容易改变,而不是说 - 错误代码相关。最好检查一下,留出更少的空间进行不必要的维护。