Mappable este un cadru usor, flexibil, usor de utilizat pentru a converti JSON in model, optimizat special pentru initializarea proprietatilor imuabile.
De asemenea, este furnizat un plugin xcode pentru a genera automat implementarea.
Caracteristici
- JSON sa obiecteze doar prin specificarea relatiilor de mapare
- Optimizat pentru imuabil si optional
- Flexibil: usor de amestecat cu initailizare manuala
- Conversie tipuri compatibile: de ex., O proprietate Int ar putea fi initializata cu valoarea String
- Suport cale cheie
De ce altul?
Majoritatea bibliotecilor JSON pentru a modela nu pot gestiona bine initializarea proprietatilor imuabile. Acestea necesita declararea proprietatilor cu tipuri var si nullable, care rup sprintul lui Swift si duc la un cod gresit. Mappable s-a nascut pentru rezolvarea acestei probleme.
Pro Contra Codabil – Nativ in Swift
– Automat (fara relatii de mapare)
– accepta conversia in 2 directii – Inflexibil
– Nu accepta clasa inerenta HandyJSON – Automata (nu exista relatii de mapare)
– Conversie in 2 directii Nu exista proprietati imuabile care accepta ObjectMapper in 2 directii conversie – Suportul proprietatilor imuabile este slab *
– Partile multiple au dus la haos
– Lipseste suportul pentru unele combinatii de tipuri. SwiftyJSON Nu este un convertor de obiecte JSON.
Este doar un instrument convenabil pentru a trata datele JSON.
* 1) Nu se poate manipula optional in mod convenabil. 2) Nu accepta conversia de tipuri compatibile, care se incadreaza in intregul obiect pentru fiecare format mal-mic in JSON.
Mappable este foarte inspirat de ObjectMapper. Ati putea calca Mappable ca o versiune imbunatatita a ImmutableMappable in ObjectMapper.
Utilizare
Cele elementare
Pentru a sprijini maparea, un tip ar trebui sa implementeze protocolul Mappable, care are doar o metoda de initializare:
Trebuie doar sa scrieti relatia de mapare: o cale cheie pentru o proprietate. Desi aceste linii sunt doar instructiuni de atribuire normale, tipurile nu sunt necesare pentru a fi specificate, astfel incat ati putea urma aceste linii ca o reprezentare speciala a relatiilor de mapare. (Ati putea citi randul ca „incercati (sa) hartati (valoarea) din XXX” ????)
Apoi, puteti initializa un obiect ca acesta:
Tipuri acceptate
- Tipuri primitive: Int, Double, String, Bool, URL, Date …
porno viola a su madre your porn
maduras folladoras videos de zofilia gratis
maduras sensuales trio bisex
videos porno trios español porno español jovencitas
abuelas follando mi madre me folla
vidio xxxx descargar pelis pornos
sexo guarro matrimonios follando
abuelas folladas por el culo follando en español
monjas lesvianas follada en la playa
incesto abuela nieto porno online gratis
porno rspañol gitanas follando
porno esp videos xxx gratis español
corridas anales porno estremo
putasfollando video famosas desnudas
porno madres peludas videos sexo español
maduras españolas amater videos pornos caseros reales
corriendose dentro sexo videos gratis
peludas porno follada a traicion
pono gay chantaje y lujuria
follando en el parque abuelas incestos - Tipuri de containere: matrice, dictionar, set
- Tip optional
- Enum, Struct, Object
- Orice combinatie a tipurilor de mai sus
Valoare implicita
Manevrare optionala
Tipurile optionale nu vor genera o eroare, chiar daca nu exista o data corespunzatoare in JSON sau data este in format gresit. In aceasta situatie se va atribui un zero.
Daca declarati o proprietate ca optionala, aceasta poate insemna ca aceste date nu sunt strict necesare in JSON. Deci, doriti sa obtineti o valoare nula daca nu exista date de fapt.
Conversie tipuri compatibile
Convertiti din Int, Double, Float, CGFloat String Bool Int, “true”, “True”, “TRUE”, “YES”, “false”, “False”, “FALSE”, “NO”, “0”, ” 1 “String Int, NSNumber URL String Date Double (secondsSince1970), String (RFC 3339, eg 2016-06-13T16: 00: 00 + 00: 00)
Mai multe detalii aici.
Conversie personalizata
Continutul din initializator este doar o atribuire simpla, deci puteti face orice cu datele. Utilizati map.getRootValue () si map.getValue (keyPath 🙂 pentru a obtine valoarea bruta JSON si faceti ceea ce doriti.
Pentru o conversie convenabila a datei, exista si o proprietate de optiuni in Mapper pentru a seta strategia de data personalizata. (Exemplu mai complex aici)
Enum
Enumere conforme RawRepresentable au o implementare implicita a Mappable. Trebuie doar sa declarati conformarea Mappable cu tipurile dvs. de enumere, apoi va functiona.
Pentru enum cu valorile asociate, puteti efectua implementarea manuala:
Mostenirea clasei
Calea cheii imbricate
Utilizati calea cheii „AAA.BBB” pentru a mapa o valoare a caii pe mai multe niveluri in JSON:
Daca o cheie normala contine. in mod natural, ati putea folosi ca map.from („a.file”, keyPathIsNested: false), pentru a trata cheia ca pe o cale de un singur nivel.
Instalare
- pentru Swift 5 si 4.2: v1.3 +
- pentru Swift 4.1 si mai jos: v1.2.2
Cocoapode
Manager de pachete Swift
Cartagina
Licenta
Mappable este disponibil sub licenta MIT. Consultati fisierul LICENTA pentru mai multe informatii.








