Biblioteca que proporciona una serie de métodos y extensiones para facilitar el desarrollo de aplicaciones en Swift. Abarca peticiones de red, extensiones de tipos de datos.
Red
El módulo de Red proporciona herramientas para manejar operaciones de red de manera eficiente y segura:
NetworkManager
: Abstracción de alto nivel sobre URLSession para realizar solicitudes HTTP y gestionar respuestas. Proporciona métodos para solicitudes GET, POST, PUT y DELETE, junto con manejo de errores de red.JSONDecoderExtension
: Extensión de JSONDecoder para decodificar datos JSON en estructuras Swift de manera sencilla y segura, manejando automáticamente los casos de decodificación fallida.NetworkError
: Enumeración de errores comunes relacionados con operaciones de red, como errores de conexión, códigos de estado HTTP inesperados, etc.
Extensiones
El módulo de Extensiones de Protocolos amplía las capacidades de tipos comunes de Swift:
StringExtensions
: Ofrece métodos útiles para manipular y validar cadenas, como verificar si una cadena es un correo electrónico válido o si contiene solo caracteres numéricos.DateExtensions
: Extensión de Date para formatear y manipular fechas de manera conveniente.NSManagedObjectExtensions
: Proporciona utilidades para simplificar el manejo de objetos administrados en Core Data, como la conversión entre objetos administrados y estructuras Swift.NSPredicateExtensions
: Extensión para construir predicados de manera más legible y sencilla.ImageExtensions
: Incluye funciones para cargar, redimensionar y manipular imágenes de manera eficiente.
Uso
Para integrar este paquete en tu proyecto Swift, puedes agregarlo como una dependencia en tu archivo
Package.swift:dependencies: [
.package(url: "https://github.com/airaizos/PurpleHummingbird.git", from: "1.0.0") ]
Ejemplos de extensiones
NSManagedObject
public extension NSManagedObject {
/// Devuelve el último valor de una entidad de CoreData
static func lastValue(field: String,context: NSManagedObjectContext) -> Self? {
guard let entityName = entity().name else { return nil }
let request = NSFetchRequest<NSFetchRequestResult>(entityName: entityName)
request.sortDescriptors = [NSSortDescriptor(key: "\(field)", ascending: false)]
return try? context.fetch(request).first as? Self
}
Date
public extension Date {
static let yesterday: Date = {
if let day = Calendar.current.date(byAdding: .day,value: -1, to: Date.now) {
return Calendar.current.startOfDay(for: day)
}
return Date()
}()
static let today: Date = {
Calendar.current.startOfDay(for: .now)
}()
static let tomorrow: Date = {
if let day = Calendar.current.date(byAdding: .day,value: 1, to: Date.now) {
return Calendar.current.startOfDay(for: day)
}
return Date()
}()
}
¿Quieres recibir posts, cheatCodes, enlaces y katas en Swift para practicar?
Quincenalmente recibirás en tu correo electrónico la newsletter, solo hace falta tu correo electrónico.