【发布时间】:2018-11-05 15:18:21
【问题描述】:
所以我正在从火基础配置数据中获取并尝试对其进行操作。
这是我的结构:
struct FireBaseConfiguration: Codable {
var updateTime: String = ""
var iOSMinVersionForceUpdate: String = ""
var iOSMinVersionMessageUpdate: String = ""
var iOSMinFirmwareVersion: String = ""
var privacyPolicyUrlFireBase: String = ""
var termOfUseUrlFireBase: String = ""
}
这是我的解析器方法:
func fireBaseConfigVersionMapParser(dataString: String, version: String) -> FireBaseConfiguration? {
var fireBaseConfiguration: FireBaseConfiguration?
let data = dataString.data(using: .utf8)!
do {
if let jsonArray = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? NSDictionary {
let model = jsonArray.object(forKey: version)
let data = try JSONSerialization.data(withJSONObject: model!, options: .prettyPrinted)
do {
let parsedModel = try JSONDecoder().decode(FireBaseConfiguration.self, from: data)
print("parsedModel is: \(parsedModel)")
fireBaseConfiguration = parsedModel
} catch let error{
print(error)
}
} else {
print("bad json")
}
} catch let error{
print(error)
}
return fireBaseConfiguration
}
这是在vc中的实现:
self.remoteConfig?.fetch(withExpirationDuration: 0, completionHandler: { [unowned self] (status, error) in
if status == .success {
self.remoteConfig?.activateFetched()
guard let configVersionMap = self.remoteConfig?.configValue(forKey: "iOSConfigVersionMap").stringValue else { return }
if let configModel = self.parser.fireBaseConfigVersionMapParser(dataString: configVersionMap, version: self.getCurrentAppVersion()!) {
print(configModel)
print(configModel.iOSMinVersionForceUpdate)
print(configModel.iOSMinVersionMessageUpdate)
var doubleForceUpdate = Double(configModel.iOSMinVersionForceUpdate)
var doubleMessageUpdate = Double(configModel.iOSMinVersionMessageUpdate)
print(doubleForceUpdate)
print(doubleMessageUpdate)
}
} else {
print("Config not fetched")
print("Error: \(error?.localizedDescription ?? "No error available.")")
}
})
所以印刷品是这样的:
FireBaseConfiguration(updateTime:“13/7/2018”,iOSMinVersionForceUpdate:“1.0.2”,iOSMinVersionMessageUpdate:“1.0.2”,iOSMinFirmwareVersion:“1.0.1”,privacyPolicyUrlFireBase:“https://www.name.com/corporate/privacy-policy”,termOfUseUrlFireBase:“ https://www.name.com/corporate/terms-of-use")
1.0.2 1.0.2 零 无
有什么想法吗?
【问题讨论】:
-
"1.0.2" 不能转换为 Double,因此采用字符串的 Double 初始化程序只返回
nil。 -
那么你的建议是什么,为什么它不能转换?这是一个简单的字符串
-
是的,很简单
String... 但它不是Double。Double值没有两个小数点。我认为您可能正在寻找的是:Compare two version strings in Swift -
你说得对,有什么建议可以在两个版本之间进行检查吗?我应该把什么转换成刺痛
-
stackoverflow.com/questions/1978456/… 或来自@Scriptable 评论的链接。
标签: swift string firebase double firebase-remote-config