Sunday, November 8, 2026
HomeiOS Developmentios - I am unable to use Delegate and Protocol to move...

ios – I am unable to use Delegate and Protocol to move knowledge

[ad_1]

I Be taught Swift, I wish to move Json api knowledge to viewController utilizing delegate and protocol:

In viewController:

  class exchangeViewController: UIViewController { 

var alternate = Trade(baseUri: "http://knowledge.fixer.io/api/newest?access_key=", apiKey: "apiKey")
@IBOutlet weak var inputEuro: UITextField!
@IBOutlet weak var getDollar: UILabel!
override func viewDidLoad() {
    tremendous.viewDidLoad()
    
    alternate.delegate? = self
}

@IBAction func exchangeCurrency(_ sender: UIButton) {
    print("button1")
    alternate.fitchData()
    print("button2")
} }


extension exchangeViewController: ExchangeCurrencyDelegate {
func didRetriveDollarvalue(greenback: Greenback) {
  
        print(greenback.base + " e1")
        self.getDollar.textual content = greenback.base
        print(greenback.base + " e2")
      }       
   }

in Mannequin Class:

protocol ExchangeCurrencyDelegate{
func didRetriveDollarvalue(greenback: Greenback)    }

class Trade{
var delegate : ExchangeCurrencyDelegate?
var baseUri : String
var apiKey  : String

init(baseUri: String, apiKey: String){
    self.baseUri = baseUri
    self.apiKey = apiKey
}
func fitchData(){
    
    let url = URL(string: baseUri + apiKey)
    
    let session = URLSession(configuration: .default)
    
    let process = session.dataTask(with: url!, completionHandler: taskHandler(knowledge:urlresponse:error:))
    
    process.resume()
}

func taskHandler(knowledge: Information?, urlresponse: URLResponse?, error: Error?) -> Void{
    do {
        
        let dollarValue:Greenback = strive JSONDecoder().decode(Greenback.self, from: knowledge!)
       
            print(dollarValue.base + " a")
            delegate?.didRetriveDollarvalue(greenback: dollarValue)
            print(dollarValue.base + " b")
     
        
    }
    catch {
        print(error)
    }
}  }

In Greenback Struct:

struct Greenback: Decodable{
var base: String }

when i execute this app, i can print:
button1,
button2,
dollarValue.base + ” a”,
dollarValue.base + ” b”,
however i am unable to execute didRetriveDollar protocol in extension exchangeViewController.

when i take advantage of Breakpoint, This system goes past delegate?.didRetriveDollarvalue(greenback: dollarValue) in mannequin class.
Can anybody discover the place is my flawed, thanks
I’m sorry if my stage in english is not adequate.

[ad_2]

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments