Groot ofera un mod simplu de serializare a graficelor obiectelor Core Data din sau in JSON.
Foloseste adnotari in modelul Core Data pentru a efectua serializarea si ofera urmatoarele caracteristici:
- Atribut si mapare relatie la caile cheie JSON.
- Transformarea valorii folosind obiecte denumite NSValueTransformer.
- Conservarea graficului de obiecte.
- Suport pentru mostenirea entitatii
Instalarea Groot
Utilizarea CocoaPods
Adaugati urmatoarele la Podfile:
Sau, daca trebuie sa acceptati iOS 6 / OS X 10.8:
Apoi executati $ pod install.
Daca nu aveti instalate sau integrate CocoaPods in proiectul dvs., puteti afla cum sa faceti acest lucru aici.
Folosind Cartagina
Adaugati urmatoarele la fisierul dvs. Cart:
Apoi rulati actualizarea $ carthage.
Urmati instructiunile din README-ul Carthage pentru a adauga cadrul la proiectul dvs.
Este posibil sa trebuiasca sa setati continutul incorporat contine cod Swift la YES in setarile de constructie pentru tintele care contin doar cod Objective-C.
Notiuni de baza
Luati in considerare urmatorul JSON care descrie un cunoscut personaj de benzi desenate:
Am putea traduce acest lucru intr-un model de date de baza folosind trei entitati: Caracter, Putere si Publisher.
Cartografierea atributelor si a relatiilor
Groot se bazeaza pe prezenta anumitor perechi cheie-valoare in dictionarul de informatii despre utilizatori asociate cu entitati, atribute si relatii pentru a serializa obiecte gestionate din sau in JSON. Aceste perechi cheie-valoare sunt adesea denumite in documentatie ca adnotari.
In exemplul nostru, ar trebui sa adaugam un JSONKeyPath in dictionarul de informatii despre utilizator al fiecarui atribut si relatie specificand calea cheii corespunzatoare in JSON:
- id pentru atributul identificator,
- nume pentru atributul nume,
- real_name pentru atributul realName,
- puteri pentru relatia de puteri,
- editor pentru relatia cu editorul,
- etc.
Atributele si relatiile care nu au o intrare JSONKeyPath nu sunt luate in considerare pentru serializarea sau deserializarea JSON.
Transformatoare de valoare
Cand am creat modelul, am decis sa folosim Numarul intreg 64 pentru atributele noastre de identificare. Problema este ca, din motive de compatibilitate, JSON foloseste siruri pentru valori id.
Putem adauga o intrare JSONTransformerName in dictionarul cu informatii despre utilizator al fiecarui atribut de identificare, specificand numele unui transformator de valori care converteste sirurile in numere.
Groot ofera o modalitate simpla de creare si inregistrare a transformatoarelor de valoare numite:
incesto en espanol folladas caseras reales
videos sexo español pajas en español
fakings.tv coños ricos
mujeresfollando incesto lesbianas
folladas extremas brutal tops
sione cooper casadas españolas follando
gorditas tetonas mamadas de polla
porno espania sexo hd
joven folla por dinero porno france
vidiosxxx peliculas eroticas italianas
como folla mi vecina xxxespañol
abuelasputas incestoxxx
padre se folla a su hija follando con mi mujer
vídeos de sexo gratis videos xxx violadas
analxxx peliculas porno castellano
pilladas desnudas españolas masturbandose
pelis porno españolas abuela porno
forzadas a follar muy maduras follando
porno viejas en español fiestas xxx
videos porno para mujeres gratis mi mujer me folla el culo
setValueTransformer (withName: “StringToInteger”, transform: toInt, reverseTransform: toString)
Conservarea graficului de obiecte
Pentru a pastra graficul obiectelor si a evita duplicarea informatiilor la serializarea obiectelor gestionate din JSON, Groot trebuie sa stie cum sa identifice in mod unic obiectele model.
In exemplul nostru, ar trebui sa adaugam o intrare identityAttributes la dictionarele de utilizator ale entitatilor Character, Power si Publisher cu identificatorul valorii.
Adaugarea adnotarii identityAttributes la entitatile dvs. poate afecta performanta atunci cand se serializeaza din JSON. Pentru mai multe informatii, consultati Performanta unificarii obiectelor.
Pentru mai multe informatii despre adnotarea modelului dvs., consultati Adnotari.
Serializarea din JSON
Acum ca avem modelul nostru Core Data gata, putem incepe sa adaugam cateva date.
Daca dorim sa actualizam obiectul pe care tocmai l-am creat, Groot poate imbina modificarile pentru noi:
Serializarea relatiilor din identificatori
Sa presupunem ca API-ul nostru nu returneaza obiecte complete pentru relatii, ci doar identificatorii.
Nu este nevoie sa ne schimbam modelul pentru a sustine aceasta situatie:
Codul de mai sus creeaza un obiect caracter complet si relatiile corespunzatoare care indica obiectele Power si Publisher care au doar atributul identificator completat.
Putem importa puteri si editor din diferite obiecte JSON si Groot le va imbina frumos:
Retineti ca relatiile de serializare din identificatori functioneaza numai cu entitati care specifica un singur atribut ca valoare a adnotarii identityAttributes.
Pentru mai multe alternative de serializare verificati Groot.swift si GRTJSONSerialization.h.
Mostenirea entitatii
Groot accepta mostenirea entitatii prin adnotarea entityMapperName.
Daca utilizati SQLite ca magazin persistent, Core Data implementeaza mostenirea entitatii prin crearea unui tabel pentru entitatea parinte si toate entitatile copil, cu un superset al tuturor atributelor lor. Acest lucru poate avea in mod evident consecinte neintentionate asupra performantei daca aveti o multime de date in entitati, asa ca utilizati aceasta caracteristica cu intelepciune.
Performanta unica a obiectelor
Unicizarea obiectelor poate afecta performanta la serializarea din JSON, deoarece necesita preluarea datelor din baza de date inainte de inserare.
Daca aruncati o privire asupra modului in care Groot este implementat, exista trei strategii de serializare:
- Introduce
- Unicitate
- Unic compozit
Dupa cum ati putea ghici, primul este cel mai performant, deoarece nu este preluat din baza de date. Daca stiti ca nu exista date duplicate in setul dvs. de date, NU setati atribute de identitate in entitatea dvs. Acest lucru il va face pe Groot sa utilizeze strategia Insert .
Groot va alege strategia Uniquing daca adnotarea identityAttributes are un singur atribut, altfel va alege strategia Composite Uniquing .
Uniquing strategiei necesita un preluari pentru fiecare matrice de JSON obiecte, in timp ce compozit Uniquing strategiei necesita un preluari pentru fiecare singur obiect JSON (este potential cel mai lent dintre cele trei strategii).
Serializarea catre JSON
Groot ofera metode de serializare a obiectelor gestionate inapoi la JSON:
Pentru mai multe alternative de serializare verificati Groot.swift si GRTJSONSerialization.h.
a lua legatura
Guillermo Gonzalez
@ gonzalezreal
Licenta
Groot este disponibil sub licenta MIT.








