У меня есть два класса в swift, TestView()
и compileResults()
.
У меня есть функции в compileResults()
, которые возвращают значение.Мне нужно, чтобы это значение вернулось в TestView()
.
Мне удалось установить значение в compileResults()
из TestView()
, но я не могу его вернуть.
У меня естьнастроить делегата таким же образом, как я использую делегатов в других местах, но он все еще не дает результатов.
TestView:
import UIKit
import Foundation
class TestView: UIViewController, XMLParserDelegate {
weak var resStartDelegate: ResStartDelegate?
override func viewDidLoad() {
super.viewDidLoad()
resStartDelegate?.setConTypeResult(val: "WiFi")
print("ConType is: ", resStartDelegate?.getConTypeResult()) //outputs value nil
}
compileResults:
import Foundation
protocol ResStartDelegate: class {
func getConTypeResult() -> String
func setConTypeResult(val: String)
}
var testViewDelegate = TestView()
var theTestResults : [String: String] = [
"conType": ""
]
class complileResults : ResStartDelegate {
init() {
setDelegate()
}
func setDelegate() {
testViewDelegate.resStartDelegate = self
}
func resetResults() {
theTestResults["conType"] = ""
}
func setConTypeResult(val: String) {
theTestResults["conType"] = val
print("Just set contype to: ", theTestResults["conType"]) //prints correctly what has been passed from TestView
}
func getConTypeResult() -> String {
return theTestResults["conType"] ?? "Err"
}
}
РЕДАКТИРОВАТЬ: Кажется, это работает, как я хочу, что-то не так с этим?
compileResults.swift
import Foundation
class complileResults {//: ResStartDelegate {
var theTestResults : [String: String] = [
"conType": "",
"date": "",
"time": "",
"jitter": "",
"loss": "",
"dspeed": "",
"uspeed": "",
"delay": ""
]
func setConTypeResult(val: String) {
theTestResults["conType"] = val
}
func getConTypeResult() -> String {
return theTestResults["conType"] ?? "Err"
}
}
TestView.swift
var comResClass = complileResults()
class TestView: UIViewController, XMLParserDelegate {
override func viewDidLoad() {
super.viewDidLoad()
comResClass.setConTypeResult(val: "WiFi")
let ct = comResClass.getConTypeResult()
print("CT ", ct)
}
}