- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个 iOS 应用程序,但遇到了这个问题。
project.pbxproj
中的 developmentRegion = es;
和更改 Info.plist
中的 CFBundleDevelopmentRegion=es
)Localizable.strings
添加到我唯一的语言 (es) 中,以便在一个文档中包含所有 Strings
。我所有的 NSLocalizedStrings
工作正常当我使用函数 HTTPURLResponse.localizedString(forStatusCode:)
时出现问题它只会用英语返回给我 Strings
。以前工作正常,但在添加 Localizable.string
后就不能正常工作了
将 Strings
恢复为西类牙语有什么帮助吗??
最佳答案
我认为您错过了正确的方法。
您不需要将低级网络错误定位为:
对于 III 点:
final private func downloadMyData(){
guard let myURL = URL(string: "__https://ingconti.com/wrongurl") else{
return
}
let session = URLSession.shared
let task = session.dataTask(with: myURL) { (data: Data?, response: URLResponse?, error: Error?) in
// session cannot be created...
if let error = error {
self.manageLowLevel(error: error)
return
}
var statusCode: Int = 0
if let httpResponse : HTTPURLResponse = response as? HTTPURLResponse{
statusCode = httpResponse.statusCode
}
if 200 ... 299 ~= statusCode {
self.parse(data: data)
}else{
self.manageHTTPError(code: statusCode, data: data)
}
}
task.resume()
如果出现大错误(例如在我的代码中我使用了错误的前缀“__https”)你会得到 _code = -1022,
并且您可以这样管理:
final private func manageLowLevel(error: Error){
#if DEBUG
print(error)
#endif
var msg = ""
let code = error._code
switch code {
case -1002:
msg = localized("GENERIC_NETWORK_ERR")
default:
msg = localized("GENERIC_NETWORK_ERR")
}
// display msg... (on MAIN THREAD...)
}
func localized(_ msg: String)->String{
let s = NSLocalizedString(msg, comment : "")
return s
}
您可以在其中屏蔽最终用户的消息并使其更通用(并使用便利功能“本地化”进行本地化)
对于 HTTP 错误(例如未找到资源...即“https://ingconti.com/wrongurl”)您将在 http/s 中收到错误 404。
所以你可以做类似的事情:
final private func manageHTTPError(code: Int, data : Data?){ 守卫让数据=数据其他{ 返回
#if DEBUG
if let s = String(data: data, encoding: .utf8){
print(s)
}else{
if let s = String(data: data, encoding: .ascii){
print(s)
}
}
#endif
var msg = ""
switch code {
case 404:
msg = localized("NETWORK_CODE_404")
default:
msg = localized("GENERIC_NETWORK_ERR")
}
// display msg...
}
甚至合并在一起。
(字符串s在
#if调试 如果让 s = .....
将显示服务器错误,并且再次不显示给用户...)
总结:所以不要显示低级错误,请参阅温和的消息,例如在您本地化的字符串中您可以:
"GENERIC_NETWORK_ERR"= "网络错误";“NETWORK_CODE_404”。 = "网络错误(无数据)";
还有西类牙语...
"GENERIC_NETWORK_ERR"= "红色错误";...
希望对您有所帮助。
关于ios - HTTPURLResponse.localizedString(forStatusCode :) not in development language,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55204631/
我正在制作一个 iOS 应用程序,但遇到了这个问题。 我的应用大部分只有西类牙语,所以我更改了开发语言(以困难的方式,更改 project.pbxproj 中的 developmentRegion =
我是一名优秀的程序员,十分优秀!