初始值设定项的结果未使用



我只是想知道为什么会出现这个错误。我将结构设置为"Model",并从viewDidLoad()中调用的extract_data函数对其进行初始化,但当我在结构中设置断点时,我可以看到所有内容都已正确初始化,奇怪的是,如果我将标签设置为Struct.base String,它不知怎的不起作用。。。我是一个初学者,所以如果能给我一个解释,我将不胜感激:)

这是我的ViewController:

override func viewDidLoad() {
super.viewDidLoad()
get_data("https://api.fixer.io/latest?base=CHF")
testLabel.text = TestStruct().base
//ANOTHER ERROR HERE (MISSING ARGUMENT FOR PARAMETER "base" IN CALL)
}
@IBOutlet var testLabel: UILabel!
var test:[TestStruct] = [TestStruct]()
func get_data(_ link:String){
let url:URL = URL(string: link)!
let sessioin = URLSession.shared
let request = URLRequest(url: url)
let testtask = sessioin.dataTask(with: request, completionHandler: { (data, response, error) in
self.extract_data(data)
})
testtask.resume()
}
func extract_data(_ data:Data?){
let json:Any?
if(data==nil){
return
}
do {
json = try JSONSerialization.jsonObject(with: data!, options: [])
//The whole JSON
let data_dictonary = json as? [String: Any]
//Just the "base"
let data_base = data_dictonary?["base"] as! String
print(data_base)
//Just the "date"
let data_date = data_dictonary?["date"] as! String
print(data_date)
//All the exchange rates
let data_rates = data_dictonary?["rates"] as! [String: Double]
print(data_rates)
TestStruct.init(base: data_base, date: data_date, rates: data_rates)
//ERROR IS HERE
}catch {
return
}
}

这是我的型号:

struct TestStruct {
var base: String
var date: String
var rates: [String: Double]
init(base: String, date: String, rates: [String:Double]) {
self.base = base
self.date = date
self.rates = rates
}
}

调用初始值设定项的语法不正确。更改:

TestStruct.init(base: data_base, date: data_date, rates: data_rates)

至:

let someVar = TestStruct(base: data_base, date: data_date, rates: data_rates)

与错误:

testLabel.text = TestStruct().base

您正试图访问新创建的TestStruct实例上的base属性,但您的TestStruct上没有init且没有参数。

您需要通过传递所有必需的参数来创建TestStruct,但这似乎毫无意义,因为您只需要它的base,并且您需要base来创建实例。

最新更新