data, persistens og sandboxing på 105

, data, persistens og sandboxing på 105,,,,, 2,,,,,,,,, 10,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet lære programmerbare sdk udvikling fra bunden. undersøger regning bar controllerbuilding en indkøbsliste anvendelse fra bunden, del 1, vedvarende data på tværs af ansøgning lancerer et krav om, at de fleste programmerbare ansøgninger, i at opbevare bruger præferencer med brugeren misligholdelser system til forvaltning af store datamængder i relationelle database.i denne artikel, vil vi undersøge de fælles strategier, der anvendes til opbevaring af data i en six anvendelse.jeg vil også tale om den fil - system på six, og hvordan anvendelsen sandboxing påvirker data persistens.,,, indledningen, du er kommet en lang vej, græshopper, og du har lært en masse.men der er et vigtigt aspekt af programmerbare udvikling, som vi ikke har diskuteret endnu, data, persistens.næsten alle programmerbare anvendelse lagrer data til senere brug.de data, din programmerbare anvendelse butikker kan være alt fra brugernes præferencer til midlertidige depoter eller endog store omgangsformer, før datasæt. den mest almindelige oplysninger om persistens strategier udviklere har den programmerbare platform er jeg først vil bruge et par minutter at diskutere sagen system og begrebet anvendelse sandboxing.tror du virkelig, du kan gemme din ansøgning er data, hvor vil du om sagen?tro om igen, padawan.,,, fil system og anvendelse sandboxing, sikkerhed på den programmerbare platform, har været et æble topprioriteter siden iphone blev indført i 2007.i modsætning til os x ansøgninger, en six anvendelse er placeret i en ansøgning sandkasse.i modsætning til, hvad de fleste tror, en ansøgning er sandkasse henviser ikke blot til en ansøgning er sandkasse adresseregister i filen.ansøgningen sandkasse omfatter også kontrolleret og begrænset adgang til brugerens data lagret på anordningen, system, tjenesteydelser og hardware, med indførelsen af mac - app butikken, æble er begyndt at håndhæve anvendelsen sandboxing på os x så godt.selv om begrænsninger på os x ansøgninger ikke er så strenge som dem, der pålægges programmerbare ansøgninger, det generelle koncept er tilsvarende, men ikke er identiske.anvendelse af en sandkasse programmerbare anvendelse, f.eks. indeholder ansøgningen bundt, hvilket ikke er tilfældet for os x ansøgninger.årsagerne til disse forskelle er hovedsagelig historiske.,, sandboxing og telefonbøger, operativsystemet monterer hvert programmerbare anvendelse i en sandkasse fortegnelse, der indeholder ansøgningen bundt fortegnelse og yderligere tre fortegnelser, dokumenter, bibliotek og tmp,.anvendelsen er sandkasse fortegnelse, ofte benævnt sit hjem, fortegnelse, kan fås ved at indkalde til et enkelt institut funktion, nshomedirectory(),.,, nslog (@ "hjem >% @", nshomedirectory()), kan du prøve det selv.skabe en ny xcode projekt baseret på fælles opfattelse anvendelse, model og et navn, data, persistens.,,,,,, åben  , tspappdelegate. m, og tilføje,   ovennævnte kode snippet til anvendelse: didfinishlaunchingwithoptions:,.,, hvis du løber anvendelse i six simulator produktionen i konsol vil se noget som output som vist nedenfor.,, 2014-03-27 09:48: 16.794 data persistens [1426:60b] hjem > /brugere /en /library /anvendelse støtte /iphone simulator /7.1/applications/5024403a-c65e-44dd-bcd2-f93097fb502e,, hvis du løber anvendelse på en fysisk anordning, produktionen ser en smule anderledes, som du kan se nedenfor.ansøgningen sandkasse og de begrænsninger, der er identiske.,, 2014-03-27 09:48: 51.571 data persistens [1426:60b] hjem > /var /mobile /ansøgninger /a4d17a73-84d7-4628-9e32-aefea5ee6153, og fandt vej til anvendelsen, dokumenter, statistik, kræver mere arbejde, som du kan se i den kode, nsarray snippet nedenfor. * « = nssearchpathfordirectoriesindomains (nsdocumentdirectory, nsuserdomainmask, ja) nsstring * dokumenter = [fortegnelser firstobject] nslog (@ "dokumenter >% @", dokumenter), bruger vi  , nssearchpathfordirectoriesindomains(),   funktion og give  , nsdocumentdirectory,   konstant som det første argument, at antyde, at vi kun er interesseret i ansøgningen er  , dokumenter,   fortegnelse.   anden og tredje argument er af mindre betydning for denne diskussion.den funktion, returnerer et tilfælde af  , nsarray,  , der indeholder et resultat, den vej, at ansøgningen er  , dokumenter,   fortegnelse. kan du undre dig over hvorfor jeg har brug  , firstobject,   i stedet for, objectatindex:, at hente den første og eneste formål i den vifte af veje.selv om jeg kan være sikker på, at den mængde tilbage ikke er tomt, hvis system skulle være tomme og system ville modtage et budskab om, objectatindex: med et argument, 0, anvendelsen ned på grund af uudnyttede undtagelse. ved at kræve, firstobject på nettet,   imidlertid den vifte vender tilbage, nul, hvis det ikke indeholder nogen objekter, hvilket betyder, at ingen undtagelse vil blive kastet.kan du huske, at dokumentationen er din ven. hvorfor sandboxing?,, hvad er fordelen ved sandboxing?den primære grund til sandboxing ansøgninger er sikkerhed.ved at begrænse ansøgninger til deres egen sandkasse, kompromitteret ansøgninger ikke kan forårsage skader på styresystem eller andre ansøgninger, af, i fare, applikationer, mener jeg de ansøgninger, der er blevet hacket, applikationer, som bevidst ondsindet, samt ansøgninger, der indeholder kritiske insekter, der kan utilsigtet skade, selv om ansøgningerne. sandboxed på six platform, programmerbare ansøgninger kan anmode om at få adgang til visse dokumenter eller aktiver, der befinder sig uden for deres anvendelse sandkasse gennem en række system grænseflader. et eksempel på dette er den musik, bibliotek er lagret på en six - anordning.ved imidlertid, at ordningen rammer har ansvaret for enhver dokumentation, der ved sådanne lejligheder.,, hvad der går hvorhen?,, selv om de kan gøre stort set, hvad vil du have i din ansøgning er sandkasse, apple har givet nogle retningslinjer med hensyn til, hvad der skal lagres, hvor.det er vigtigt at vide, om disse retningslinjer af flere grunde.   når programmerbare anordninger bakkes op af itunes, ikke alle filerne i en ansøgning er sandkasse indgår i backup.,,, tmp, fortegnelse, for eksempel, bør kun anvendes til midlertidig opbevaring af dokumenter.styresystemet er fri til at tømme denne fortegnelse til enhver tid, for eksempel, når anordningen er lav på diskette rum.det er ikke inkluderet i tfp 'en, fortegnelse backups.,,, dokumenter, fortegnelse er beregnet til bruger data, mens, bibliotek, statistik anvendes til anvendelse af data, der ikke er strengt bundet til brugeren.det, depoter, fortegnelse, bibliotek, statistik, er et andet register, der ikke er bakket op af itunes.,, også huske på, at deres ansøgning skal ikke ændre indholdet af ansøgningen bundt fortegnelse.ansøgningen bundt fortegnelse er undertegnet, når ansøgningen er installeret.ved at ændre indholdet af ansøgningen bundt fortegnelse på nogen måde ovennævnte underskrift er ændret, hvilket betyder styresystemet ikke tillader anvendelsen at starte igen.det er en sikkerhedsforanstaltning, iværksat af æble - for at beskytte forbrugerne.,,, data persistens muligheder, er der flere strategier til at opbevare ansøgningen på disketten.i denne artikel, skal vi kaste et kort blik på fire fælles holdninger til programmerbare:,, bruger misligholdelser, ejendom, lister, sqlite, grundlæggende data, de muligheder, der er beskrevet i denne artikel, skal ikke betragtes som substituerbare.hver strategi har sine fordele og ulemper.lad os starte med at se på brugeren misligholdelser system.,,, bruger misligholdelser, brugeren misligholdelser system er noget, der er programmerbare arvet fra os. selv om det blev skabt og udformet til opbevaring af brugernes præferencer, der kan anvendes til opbevaring af enhver form for oplysninger, så længe det er en ejendom liste type,  , nsstring,, nsnumber,, nsdate,, nsarray,, nsdictionary, og nsdata, eller nogen af deres ustadigt varianter.,, brugeren misligholdelser database, er ikke andet end en samling af ejendom lister, en ejendom liste pr. ansøgning.ejendommen liste er oplagret i en mappe, der hedder, præferencer i ansøgningen, bibliotek, folder, som antyder, at ejendommen liste er formål og funktion. en af grundene til, at entreprenører, som brugeren misligholdelser system, fordi det er så let at anvende.tag et kig på kodestykke ned for at se, hvad jeg mener.,, nsuserdefaults * userdefaults = [nsuserdefaults standarduserdefaults]; [userdefaults setbool: ja forkey: @ "key1"]; [userdefaults setinteger: 123 forkey: @ "key2"]; [userdefaults setobject: @ "formål" forkey: @ "key3"]; [userdefaults boolforkey: @ "key1"]; [userdefaults integerforkey: @ "key2"]; [userdefaults objectforkey: @ "key3"]; [userdefaults synkronisere], ved at  , standarduserdefaults,   klasse metode på  , nsuserdefaults, en henvisning til den fælles misligholdelser objekt er vendt tilbage.,,, i sidste linje, vi kalder, bliver på den fælles misligholdelser formål at skrive eventuelle ændringer til disk.det er ikke nødvendigt at påberåbe sig, at synkronisere, fordi brugeren misligholdelser system sparer ændringer, når det er nødvendigt.men hvis du opbevarer eller ajourføring af en fastsættelse af brugeren misligholdelser system, kan det undertiden være nyttigt eller nødvendigt udtrykkeligt at redde de ændringer til disk. ved første øjekast brugeren misligholdelser system synes at være andet og mere end en central værdi forretning beliggende på et bestemt sted.men det, nsuserdefaults, klasse, defineret i instituttets ramme, er mere end en grænseflade til forvaltning af en central værdi i butikken.tag et kig på denne klasse reference for yderligere oplysninger, før vi går videre, pasta ovennævnte kode snippet i ansøgningen delegerede, anvendelse: didfinishlaunchingwithoptions:, metode og anvendelse i six - simulator.åbne et nyt finder vindue og navigere, bibliotek > anvendelse støtte > iphone simulator > 7.1 > ansøgninger (i stedet for  , "7.1" med den seneste version af programmerbare).,, finde anvendelse folder, der svarer til anvendelsen af inspicere de forskellige, cryptically ved navn foldere i ansøgninger, mappe.den cryptically ved navn mappe er faktisk anvendelse sandkasse fortegnelse.i ansøgningen sandkasse fortegnelse, åbne, præferencer, servietter, befinder sig i, bibliotek, mappe, og kontrollere dens indhold.,,,,,, du bør se en ejendom liste med et navn er identisk med anvendelsen er bundt id.det er brugeren misligholdelser butik i din ansøgning.,, hvis du ønsker at gøre det lettere at få adgang til en sandkasse for en ansøgning i six simulator, så jeg vil anbefale, at du tager et kig på simpholders.det er en gratis nytteværdi, der gør arbejdet med programmerbare simulator meget lettere.,,, ejendom, lister, har vi allerede dækket ejendom lister i denne serie.som en kendsgerning, støtte opbevares af brugeren misligholdelser database er en ejendom.ved hjælp af ejendom lister er en passende strategi til at lagre og genfinde et objekt figur.ejendom lister har været her i lang tid, er let at anvende, og de er derfor en stor mulighed for lagring af data i en six anvendelse.,, som jeg nævnte tidligere, er det vigtigt at huske på, at en ejendom liste kan kun opbevares ejendom liste data.betyder det, at det ikke er muligt at oplagre specialbygget model objekter ved hjælp af ejendom lister?nej, det er muligt.men specialbygget model genstande skal være archived-a form for serialization, før de kan oplagres i en ejendom.arkivering af en genstand, betyder blot, at målet skal omregnes til data, der kan lagres i en ejendom, som f.eks. en, nsdata, f.eks.,, arkivering af genstande, kan du huske, nscoding, protokollen defineret i instituttets rammer?det, nscoding, protokollen definerer to metoder, initwithcoder:, og encodewithcoder:,, som en klasse skal gennemføre for at give eksempler på klasse skal kodes og dechifreret.,, kodning og afkode den underliggende mekanismer til objekt, arkivers og distribution.hvordan objekt arkivers arbejder vil blive klart lidt senere i denne serie.i denne lektie, jeg viser dig, hvordan man skriver arrays og ordbøger til disk ved hjælp af ejendom lister., skrive til sagsakter, følgende kode snippet bør give en idé om, hvor nemt det er at skrive et system eller en ordbog på diskette.i teorien er formålet figur opbevares i en ejendom liste kan være så komplekse eller så meget, som du vil.dog huske, at ejendomsret lister er ikke beregnet til opbevaring af snesevis eller hundredvis af megabyte data, at forsøge at bruge dem på den måde vil sandsynligvis medføre forringede præstationer.,, nsarray * frugter = @ [@ "æble" @ "mango" @ ananas "@" plum "." abrikos "] nsstring * filepathfruits = [dokumenter stringbyappendingpathcomponent: @" frugter. plist "]; [frugter writetofile: filepathfruits atomically: ja] nsdictionary * miscdictionary = @ {@" anarray ": frugter, @", en ": @ 12345, @" aboolean ": @ ja}; nsstring * filepathdictionary = [dokumenter stringbyappendingpathcomponent: @" diverse ordbog. plist "]; [miscdictionary writetofile: filepathdictionary atomically: ja] nsarray * loadedfruits = [nsarray arraywithcontentsoffile: filepathfruits];nslog (@ "frugter array >% @", loadedfruits); nsdictionary * loadedmiscdictionary = [nsdictionary dictionarywithcontentsoffile: filepathdictionary] nslog (@ "diverse ordbog >% @", loadedmiscdictionary), lad os tage et kig på ovennævnte kode snippet.vi begynder ved lagring af en henvisning til en bred vifte bogstaveligt i en variabel, der hedder  , frugter,.vi skaber den fil vej til opbevaring af ejendommen liste, som vi er ved at gøre.filen sti er skabt af forsynet med en snor til filen vej for  , dokumenter,   fortegnelse, som vi fik tidligere i denne lektion.snoren, at vi både vil være navnet på ejendommen liste, herunder dets udvidelse,  ,. plist, - at vi vil skabe et øjeblik.,, skriver antennegruppe til disk er så let som at  , writetofile: atomically:,   på nettet.du kan se bort fra  , atomically,   flag for nu.,,, som eksemplet viser, at skrive en ordbog til disk følger samme mønster.eksemplet illustrerer også, hvor at skabe systemer og ordbøger, fra en ejendom liste, men det er noget, som vi allerede tidligere i denne serie.,, løb anvendelse i six flyvesimulatortræning og navigere for anvendelsen, dokumenter, statistik, som vi tidligere har set.i denne fortegnelse, skulle du se de to ejendom lister, vi har lige skabt.,,,,,, sqlite, hvis ansøgningen er data, drevet og arbejder med store mængder data, så kan du kigge på sqlite.hvad er sqlite?temaet om sqlite websted læser "små.hurtigt.pålidelige.vælg tre. ", som sådan, det er fint.,, sqlite er et bibliotek, der gennemfører en let indbyggede relationel database.som navnet antyder, det er baseret på sql standard (structured query language), som mysql og postgresql.,, den vigtigste forskel med andre sql databaser, er, at sqlite er bærbare, meget let, og at det er serverless i stedet for en særskilt proces adgang fra kunden, anvendelse.med andre ord, det er indbygget i ansøgningen, og derfor meget hurtigt.,, sqlite websted hævder, at det er den mest anvendte sql database.jeg ved ikke, om det stadig er tilfældet, men det er helt sikkert et populært valg for client-side lagring af data.åbning og iphoto, for eksempel, er afhængige af sqlite for nogle af deres lagring af data, den fordel, sqlite har over arbejder direkte med genstande er, at sqlite er størrelsesordener hurtigere, hvilket skyldes i vid udstrækning, hvordan relationsdatabaser og objekt orienterede programmeringssprog fundamentalt forskellige.,, til at slå bro over kløften mellem sqlite og objective-c, en række indvendinger relationel kortlægning, (orm) løsninger er blevet skabt over tid.den orm, at apple har skabt for os x 105 og hedder, grundlæggende data, som vi vil se på senere i denne lektion.,,, der fører kød er fmdb, ved hjælp af sqlite den programmerbare midler at arbejde med en c-based bibliotek.hvis du foretrækker et objekt målrettet løsning, vil jeg anbefale gus mueller (flyvende kød, inc.) objective-c papir til sqlite, fmdb. det er at arbejde med sqlite meget nemmere, hvis du foretrækker et objekt orienterede grænseflade.biblioteket støtter arc (, automatisk henvisning tæller,) ud af kassen og er meget performant.jeg har brugt fmdb i fortiden, og som har været meget tilfreds med sit api - og biblioteket er robusthed og pålidelighed.,,, grundlæggende data, udviklere nye centrale data ofte fejl core data for en database, og det er virkelig et objekt relationel kortlægning løsning, der oprettes og vedligeholdes af æble.   matt gallagher har skrevet et stort post om forskellene mellem de centrale data og en database.   core data giver en relationel objekt orienteret model, som kan være serialized i en xml -, binære eller sqlite butik.basisoplysninger, der støtter en hukommelse butik.,, hvorfor bruge core data i stedet for sqlite?ved at stille spørgsmålet, man fejlagtigt antager, at centrale data er en database.fordelen ved hjælp af grundlæggende data, er, at du arbejder med genstande i stedet for rå data, som rækker i en sqlite database eller data, der er lagret i en xml - filer.selv om centrale data havde nogle vanskelige år, da det første gang blev frigivet, det er blevet til en robust ramme med mange elementer, såsom automatiske folkevandringer, ændre sporing, faulting og integreret validering.,, en anden stor træk, at mange entreprenører på de basisoplysninger, model redaktør bygget ind i xcode, der lader deres udviklere model data - model ved en grafisk brugerflade.,,,,,, om grundlæggende data, er den rigtige løsning for deres anvendelse afhænger af de data, som de planlægger at forvalte, både med hensyn til mængde, samt den underliggende model.hvis du planlægger at forvalte meget store datamængder, så centrale data kan blive en forestilling flaskehals over tid.i det tilfælde, sqlite kan være en bedre løsning. icloud,,,,, du har sikkert hørt om icloud, og man kan undre sig over, hvor icloud passer ind i historien af data vedholdenhed.icloud er ikke en form for oplysninger, som sqlite persistens eller centrale data.i stedet er det en platform eller en tjeneste for bruger data på tværs af de forskellige anordninger og gentagne tilfælde af en ansøgning eller en familie af ansøgninger.,, icloud platform omfatter flere serviceydelser eller komponenter.den komponent, der interesserer os, er, icloud oplagring, som omfatter tre former for oplagring:,, grundlæggende værdi, oplagring, dokument, oplagring, centrale lagring.,, hvis du vil læse mere om icloud oplagring, vil jeg anbefale at læse   en serie om icloud oplagring  , at jeg skrev tidligere på året, konklusion. de bør nu har et godt billede af de muligheder, de har i kraft af data, persistens, når der udvikles til programmerbare platform.husk på, at ikke alle de strategier, som vi har dækket er lige.,, denne serie er langsomt ved at være slut.i de næste to rater, vil vi skabe en ansøgning til det, vi har lært så meget i praksis.den bedste måde at lære på, er ved at gøre.







Previous:
Next Page: