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...
Design Patterns on iOS using Swift - Singleton Design Pattern Example
iOS Design Patterns Tutorial - Design patterns are evolved as reusable solution to the problem that we encounter every day of programming
Types of Design Patterns - iOS Developer Live
Creational: This type design deals with the object creation and initialization.
Eg: Singleton, Factory, Abstract Factory.
Structural: This type design pattern deals with class and object composition
Eg: MVC, Decorator, Adapter, Bridge, Facade.
Behavioral: Deals with the communication between classes and object
Eg: Observer, and, Memento
Creational Pattern - Singleton Design Patterns
Creational Pattern - Only one Instance of a particular classes, singleton pattern belongs to Ceational type pattern, This pattern is used when we need to ensure that only one object of a particular class need to be created. Only one object available across the application in a controlled
- Declaring all constructor of the class to be private
- Provide static method that return a reference to the instance.
- The instance to be stored as a private static variable
Example:-
class singaltonDemo
{
static let instance = singaltonDemo()
var data: Int = 0
private init(){
}
func setData(value: Int){
data = value
}
func getData() ->Int {
return data
}
}
singaltonDemo.instance.setData(10)
print("Data = \(singaltonDemo.instance.getData())")
This is an awesome post. Really very informative and creative contents.
ReplyDeleteios app Devlopment company in chennai