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...
Getting Started Save, Fetch, Update and Delete Core Data in Swift 5.0 Core Data is NOT an SQLite database. it is a graphical and persistence framework. CURD in swift (Create, Update, Retrieve, Delete) //MARK: - Save User Info Data func addData ( user_name : String , user_email : String , user_dob : String , imageData : NSData ) { guard let appDelegate = UIApplication . shared . delegate as ? AppDelegate else { return } let managedContext = appDelegate. persistentContainer . viewContext let entity = NSEntityDescription . entity ( forEntityName : "UserInfo" , in : managedContext)! ...