import Foundation import KeychainAccess enum APIError : Error { case accessTokenExpired case networkError // Add more error cases as needed } class APIManager { private let keychain = Keychain (service: "com.example.app.refreshToken" ) private let refreshTokenKey = "refreshToken" private var accessToken: String ? func callAPI < T : Codable >( urlString : String , method : String , parameters : [ String : Any ] ? , completion : @escaping ( Result < T , APIError >) -> Void ) { guard let url = URL (string: urlString) else { completion(.failure(.networkError)) return } var request = URLRequest (url: url) request.httpMethod = method // Add access token to the request headers if available if let token = accessToken { request.setValue( "Bearer \(token) " , forHTTPHeaderField: "Aut...
Map, filter, reduce, Flatmap and CompactMap drop in Swift. Simple Higher Order Function Higher order functions are simply functions that operate on other functions by either taking a function or closures as an argument, or returning a function. That can be used on collection types such as Array or Dictionary Map : - " Use map to loop over a collection and apply the same operation to each element in the collection. The map function returns an array containing the results of applying a mapping or transform function to each item:" That used for-loop- let arrays = [2.0,4.0,5.0,7.0] var arraySquar: [Double] = [] for value in arrays { arraySquar.append(value*value) } // [4.0, 16.0, 25.0, 49.0] Now With map let arrays = [2.0,4.0,5.0,7.0] let arraySquar= arrays .map {$0 * $0} // [4.0, 16.0, 25.0, 49.0] let scores = [0,28,124] let words = scores.map { NumberFormatter.localizedString(from: $0 as NSNumber, number: .spellOut) } print(wo...