【问题标题】:custom Parse error code with localizable.string?使用 localizable.string 自定义解析错误代码?
【发布时间】:2015-08-26 00:16:17
【问题描述】:

我正在尝试为解析的“无效登录参数(代码:101,版本: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"

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

【问题讨论】:

    标签: ios swift localization internationalization


    【解决方案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 提供的错误消息比相关的错误代码更容易更改。明智的做法是检查这一点,从而减少不必要的维护空间。

    【讨论】:

    • 不,我无法从警报视图调整消息,我必须根据参数中的特定消息调整消息,因此func failedMessage(theMessage: String) .. 如果有错误登录然后我在self.failedMessage(errorView)中显示特定消息let errorView:String = error!.userInfo!["error"] as! String
    • 那么我如何在我的let errorView:String = error!.userInfo!["error"] as! String 常量中添加NSLocalizedString"
    • 所以在where errorCode = 语句中,我应该输入"invalid login parameters" 吗?因为那是解析发出的错误消息
    • 我已编辑解决方案以改用错误字符串
    • 所以我删除了本地化文件并再次添加它,这种方法有效。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多