Skip to content

Instantly share code, notes, and snippets.

View alvaroroyo's full-sized avatar
🤠
Working from home

Alvaro Royo alvaroroyo

🤠
Working from home
View GitHub Profile
import Foundation
enum AppEnvironment {
case Development
case QA
case Release
}
struct AppConfig {
import Foundation
struct Person: Codable {
var firstName: String
var surName: String
var alias: String?
var age: Int
var height: Double
let url = Bundle.main.url(forResource: "persons", withExtension: "json")
let fileData = try! Data(contentsOf: url!)
let persons:[Person] = try! JSONDecoder().decode([Person].self, from: fileData)
enum CodingKeys: String, CodingKey {
case firstName = "first_name"
case surName
case alias
case age
case height
}
extension DateFormatter {
static let bornDate: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "dd/MM/yyyy HH:mm"
return formatter
}()
}
let url = Bundle.main.url(forResource: "persons", withExtension: "json")
let fileData = try! Data(contentsOf: url!)
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(DateFormatter.bornDate)
let persons:[Person] = try! decoder.decode([Person].self, from: fileData)
import Foundation
class Person: NSObject {
var name:String!
var age:Int!
}
import Foundation
import Alamofire
protocol PersonsInteractorInput: class {
func fetchPersons()
}
class PersonsInteractor: NSObject, PersonsInteractorInput {
let url = "https://www.example.com"
import Foundation
// Protocolo que define los comandos mandados desde la vista al presenter.
protocol PersonsModuleInterface: class {
func updateView()
func showDetailsForPerson(_ person: Person)
}
// Protocolo que define los comandos mandados desde el interactor al presenter.
protocol PersonsInteractorOutput: class {
import UIKit
protocol PersonsViewInterface: class {
func showPersonsData(persons: [Person])
func showNoContentScreen()
}
class PersonsViewController: UIViewController, PersonsViewInterface {
@IBOutlet weak var table: UITableView!