gpt4 book ai didi

ios - 如何从 Firebase remote-config 获取数组 json 值?(Swift)

转载 作者:行者123 更新时间:2023-12-01 15:49:23 27 4
gpt4 key购买 nike

我使用 Firebase 远程配置来比较要更新的应用程序版本,但无法获得远程配置值。

如何快速获得数组 json 之类的值?

这是我的值(value)

[
{
"version": "1.0.4",
"status": "2",
"text": "Fix Error"
}
]

这是我的代码

获取值(value):
class ConstraintValues {
static let shared = ConstraintValues()
init() {
RemoteConfig.remoteConfig().setDefaults(["a":"b" as NSObject])
let debugSettings = RemoteConfigSettings()
RemoteConfig.remoteConfig().configSettings = debugSettings
}
func fetch(completetion:@escaping ( _ stringarray:String?)->()) {
RemoteConfig.remoteConfig().fetch(withExpirationDuration: 0) { (status, error) in
if let error = error {
print(error)
completetion(nil)
return
}
RemoteConfig.remoteConfig().activate()
let rc = RemoteConfig.remoteConfig().configValue(forKey: "VERSION")

do {
let json = try JSONSerialization.jsonObject(with: rc.dataValue, options: .allowFragments) as! [String:String]

guard let dictionary1 = json["version"] else {return }
guard let dictionary2 = json["text"] else {return }
guard let dictionary3 = json["status"] else {return }
completetion(dictionary1)
completetion(dictionary2)
completetion(dictionary3)
}
catch let error{
print(error)
completetion(nil)
}

}
}}

检查版本:
func checkversion(controller:UIViewController){
ConstraintValues.shared.fetch { (version) in
let cversion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as! NSString//localversion
let url = URL(string: "https://www.google.com/")
let appStore = version//newversion
//Compare
let versionCompare = cversion.compare(appStore! as String, options: .numeric)
if versionCompare == .orderedSame {
print("same version")
} else if versionCompare == .orderedAscending {

let alertc = UIAlertController(title: "UPDATE!!", message: "New Version: \(version!)", preferredStyle: .alert)
let alertaction = UIAlertAction(title: "Update", style: .default, handler: { (ok) in
if #available(iOS 10.0, *) {
UIApplication.shared.open(url!, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(url!)
}
})
alertc.addAction(alertaction)
controller.present(alertc, animated: true, completion: nil)

} else if versionCompare == .orderedDescending {

}
}
}

我可以取"version": "1.0.4",但是取不到"text"。
这个方法我该怎么办?

最佳答案

当您使用 JSON 对象时,我建议您在此处使用 SwiftyJSON。
安装 SwiftyJSON在你的项目中
然后导入 SwiftyJSON在文件顶部
您的代码应如下所示

import Firebase
import SwiftyJSON

class MyViewController: UIViewController {

var remoteConfig: RemoteConfig!

override func viewDidLoad() {
super.viewDidLoad()

remoteConfig = RemoteConfig.remoteConfig()
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 0
remoteConfig.configSettings = settings

var remoteConfigDefaults = [String: NSObject]()
let testArr: NSArray = []
remoteConfigDefaults["VERSION"] = testStr
remoteConfig.setDefaults(remoteConfigDefaults)

remoteConfig.fetch() { (status, error) -> Void in
if status == .success {
print("Config fetched!")
self.remoteConfig.activate() { (error) in
// ...
}
} else {
print("Config not fetched")
print("Error: \(error?.localizedDescription ?? "No error available.")")
}

let version = self.remoteConfig.configValue(forKey: "VERSION").jsonValue
let json = JSON(version)
print(json[0]["version"], json[0]["status"], json[0]["text"])

}
}

}

关于ios - 如何从 Firebase remote-config 获取数组 json 值?(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58443139/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com