Jeg er allerede ganske kjent med relasjonsdatabaser og har brukt SQLite (og andre databaser) tidligere. Core Data har imidlertid en viss allure, så jeg vurderer å bruke litt tid til å lære den til bruk i neste søknad. Er det mye fordelen med å bruke Core Data over SQLite eller omvendt Hva er proscons av hver jeg finner det vanskelig å rettferdiggjøre kostnaden ved å lære Core Data når Apple ikke bruker det for mange av sine flaggskipapplikasjoner som Mail. app eller iPhoto. app - i stedet velger SQLite databaser. SQLite brukes også mye på iPhone. Kan de som er kjent med å bruke begge, kommentere deres erfaring Kanskje, som med de fleste ting, er spørsmålet dypere enn bare å bruke den ene over den andre spurte 7 februar 09 klokka 9:05 lukket som ikke konstruktiv av casperOne 23. feb 12 kl 23:25 Som Det står for øyeblikket, dette spørsmålet passer ikke godt til vårt QampA-format. Vi forventer at svar støttes av fakta, referanser eller ekspertise, men dette spørsmålet vil trolig kreve debatt, argumenter, avstemning eller utvidet diskusjon. Hvis du føler at dette spørsmålet kan forbedres og muligens gjenåpnes, kan du besøke brukerstøtten for veiledning. Hvis dette spørsmålet kan omformuleres for å passe til reglene i brukerstøtten. Vennligst rediger spørsmålet. Kan du vær så snill å legge til en lenke til en. wikipedia. orgwikiCoreData for alle som ikke vet hva det er. ndash RSabet Feb 7 09 at 9:26 Merk at Core Data ikke er og bør ikke brukes som en database ndash user142019 6. aug kl 12:10 Selv om Core Data er en etterkommer av Apples Enterprise Object Framework. en objektrelasjonsmapper (ORM) som var tett bundet til en relasjonsbackend, Core Data er ikke en ORM. Det er faktisk et objektgrafistledningsramme. Den administrerer en potensielt veldig stor graf av objekts forekomster, slik at en app kan fungere med en graf som ikke helt passer inn i minnet ved å feile objekter inn og ut av minnet etter behov. Kjernedata håndterer også begrensninger på egenskaper og relasjoner og maintins referanseintegritet (for eksempel å holde fremover og bakoverforbindelser konsistente når objekter blir lagt til fra et forhold). Kjernedata er dermed et ideelt rammeverk for å bygge modellkomponenten i en MVC-arkitektur. For å implementere grafhåndtering, skjer Core Data for å bruke sqlite som en diskbutikk. Det kunne ha blitt implementert ved hjelp av en annen relasjonsdatabase eller til og med en ikke-relasjonell database som CouchDB. Som andre har påpekt, kan Core Data også bruke XML eller et binært format eller et brukerskrevet atomformat som en backend (selv om disse alternativene krever at hele objektgrafen passer inn i minnet). Hvis du er interessert i hvordan Core Data implementeres på en sqlite-backend, vil du kanskje sjekke OmniGroups OmniDataObjects-rammeverket, en åpen kildekodeimplementering av en delmengde av Core Data API. BaseTen-rammen er også en implementering av Core Data API ved hjelp av PostgreSQL som backend. Fordi Core Data ikke er ment som en ORM for sqlite, kan den ikke lese vilkårlig sqlite-skjema. Omvendt bør du ikke stole på at du kan lese Core Datas sqlite datalager med andre sqlite verktøy, skjemaet er en implementerings detalj som kan endres. Dermed er det egentlig ingen konflikt mellom å bruke Core Data eller sqlite direkte. Hvis du vil ha en relasjonsdatabase, bruk sqlite (direkte eller via en av Objective-C wrappers som FMDB) eller en relasjonsdatabaseserver. Du kan likevel fortsatt lære Core Data til bruk som et objektgrafistledningsramme. I kombinasjon med Apples controller klasser og viktige bindende kompatible visning widgets, kan du implementere en komplett MVC arkitektur med svært lite kode. svarte Feb 7 09 at 18:27 Merk fmdb er ikke en ORM, bare en objc wrapper rundt sqlite3 C api ndash robottobor 7 februar 09 kl 20:57 Takk for fangsten, jeg oppdaterer innlegget. ndash Barry Wark 7 feb 09 kl 21:27 Med iOS 5.0 får du den ekstra fordelen av å kunne bruke iCloud-filsynkronisering gratis hvis du bruker Core Data. Hvis du bruker SQLite direkte, må det være mye manuelt tinkering og implementering for å få det til å synkronisere over iCloud. ndash underlig Aug 21 11 kl 10:26 Prøv githubpmurphyjamDBExempel Det er et Xcode-prosjekt som bruker SQLite. ndash Pat 22 mai 14 kl 21:28 Og med iOS 5.0 får du den ekstra fordelen av å kunne bruke iCloud-filsynkronisering gratis hvis du bruker Core Data. Hvis du bruker SQLite direkte, må det være mye manuelt tinkering og implementering for å få det til å synkronisere over iCloud. iOS Databaser: SQLLite vs. Core Data vs. Realm Hvis du vil lage en flott app som kjører raskt og bare fungerer ( ingen feil tillatt) du må nøye tenke på alle utviklingsaspekter av appen din. Et av aspektene du må finne ut er hvordan du lagrer og søker etter store mengder data, så du vil sannsynligvis bruke en database. De vanligste alternativene for iOS-databaser er SQLite og Core Data og en relativt nyere spiller som heter Realm. Denne artikkelen dekker fordeler og ulemper ved hvert alternativ og diskuterer prosessen med å bytte til Realm hvis du allerede bruker SQLite eller Core Data. SQLite er den mest brukte databasemotoren i verden og dens åpne kilde også. Det implementerer en transaksjonell SQL-databasemotor uten konfigurasjon og ingen server nødvendig. SQLite er tilgjengelig på Mac OS-X, iOS, Android, Linux og Windows. Den gir et enkelt og brukervennlig programmeringsgrensesnitt som det står skrevet i ANSI-C. SQLite er også veldig liten og lys, og den komplette databasen kan lagres i en plattform diskfil. Årsakene til den store populariteten til SQLite er dens: Uavhengighet fra en server nullkonfigurasjon Sikker tilgang fra flere prosesser og tråder Lagrer data i tabeller med en eller flere kolonner som inneholder en bestemt type data. Core Data er den andre viktigste iOS-lagringsteknologien som er tilgjengelig for apputviklere. Avhengig av typen data og mengden data du trenger å administrere og lagre, har både SQLite og Core Data sine fordeler og ulemper. Core Data fokuserer mer på objekter enn de tradisjonelle tabelldatabasemetodene. Med Core Data lagrer du faktisk innholdet i et objekt som er representert av en klasse i Objective-C. Selv om de er fundamentalt forskjellige, Kjerne data: Bruker mer minne enn SQLite Bruker mer lagringsplass enn SQLite Raskere ved å hente poster enn SQLite. Det er en ny (ish) spiller i byen som heter Realm. Realm ble designet for å være raskere og mer effektiv enn de tidligere databaseløsningene. Denne nye løsningen er en mobil plattform med kalt plattform, kalt Realm. Den er tilgjengelig i Objective-C og Swift, og er designet for iOS og Android. De store opplevelsene til Realm er: Det er helt gratis, raskt og enkelt å bruke. Ubegrenset bruk. Arbeid på egen utholdenhetsmotor for fart og ytelse. Det som virkelig er bra med det er at du kan håndtere alt arbeidet med et par linjer med kode. Realm er veldig enkelt å installere og raskere å jobbe med sammenlignet med SQLite og Core Data. Også databasefilene kan deles mellom iOS og Android. Hvis du designer en app med mange poster og for et stort antall brukere, må du være spesielt oppmerksom på skalerbarheten fra begynnelsen. Realm er flott på dette og det lar deg håndtere mye data raskt. For å komme i gang med Realm, er alt du trenger, minst iOS 8 eller OS X 10.9. Eldre versjoner støtter ikke denne nye, enkle løsningen for å administrere lokal lagring og databaser. Bytte til Realm Hvis du har jobbet med Core Data, og du vil gå videre til Realm, er prosessen enkel. Mange utviklere har gjort reisen om et par timer. Vær oppmerksom på at både Core Data og Realm behandler data som objekter, så det du må gjøre er å reflektere Core Data-koden for å bruke Realm. Fjern Core Data Framework. Finn delen av koden din som inneholder Core Data-kode og refactor dem. De skisserer et fint triks for å kaste en kompilatorfeil for hver linje med kode ved hjelp av Core Data. Fjern Kore Data Setup Code. Theres kommer til å være en del av Core Data setup-kode et sted i appen din, og du trenger å bli kvitt alt. Realm konfigureres automatisk så snart du får tilgang til et Realm-objekt for første gang. Du kan velge hvor du vil lagre Realm-datafilen, og den vil fortsatt være valgfri ved kjøring. Overfør dine modellfiler. Du kan enkelt konvertere Managed Subclasses til Realm. Realm forvalter eiendomsordre internt (du trenger ikke å spesifisere dem), noe som gjør at kursoverskriften ser mer minimal ut. Også, du kan trygt fjerne alle NSNumber cruft fordi Realm støtter enkle numeriske data (NSInteger og CGFloat). Det er også begrensninger for Realm. I motsetning til Core Data hvis objekter har NSManagedObjectID for å identifisere objekter unikt, forlater Realm dette til deg som utvikler. For det andre kan den nåværende versjonen av Realm ikke håndtere objektegenskaper med en null verdi. Dette er et mindre ulempe, men utviklerne er lovende at den neste versjonen av Realm ikke vil ha dette problemet. Migrerer dine skriveoperasjoner. Realm8217s lagre operasjoner er litt annerledes enn i Core Data, og du må bli kjent med dette. Når Realm-objektene er lagt til i et Realm-objekt, kan de ikke endres. Dette sikrer konsistens av data i forskjellige tråder. For å kunne endre egenskapene, må objektet der disse lagres, være i en skrive-transaksjon. Overfør forespørslene dine for å kunne hente dataene dine etter behov. For å hente en fil, i Core Data trenger du ca. 10 linjer med kode. I Realm kan du gjøre det samme med bare en linje. Overfør brukerens produksjonsdata for aktive apper som er opprettet i Core Data, du kan koble Kjerne-data-rammen tilbake til appen, hente brukerdata og sende den videre til Realm. En enklere løsning for utskiftbare brukerdata er å fjerne alle Core Data-lagringsfiler og starte neste gang appen er åpen. Nøkkelen er å holde designprosessen så enkel med de beste teknikkene og verktøyene. Når du har investert tid til å sette opp din prøvde og sanne prosess, ikke la tiltrekningen til ny ta deg selvfølgelig. Kan det nye arbeidet være en del av prosessen din, og tiden er detektoren av det som ikke er verdig. Post navigasjonHilsen, og velkommen til vår ukentlige roundup Denne uken fortsatte Brent Simmons sin fantastiske serie med artikler på bloggen hans om å bygge Vesper, notatet som ble opprettet av ham, Dave Wiskus og John Gruber. Han tilbyr mye god innsikt i å ta en beslutning om SQLite3 vs Core Data. Når jeg snakket om meg selv, brukte jeg en god del tid denne uken på å få tak i Marco Arments SQLite ORM-bibliotek, FCModel. Og jeg må si, til tross for noen tøffe kanter (spoiler alert: det er fortsatt ansett som alpha), jeg liker det mye bedre enn Core Data. Visst, det gjør ikke så mye, men det gir også en langt mer enkel konseptuell modell, og faktisk føles det som om du interagerer med en database i stedet for et galt objektgrafikksystem. Din kjørelengde kan variere Jeg er sikker på at det er mange mennesker som faktisk liker Core Data, men jeg kan fortsatt ikke telle meg selv blant dem. I mellomtiden har folkene bak objc. io lagt ut et annet fantastisk problem med mange gode innsikter i IOS 7. Som jeg sa måneder siden, er iOS 7 i seg selv et stort sprang fremover for plattformen, men det vil ende opp med å bli sammenlignet med De fantastiske nye appene vil gjøre det mulig for folk som oss å lage. Hadde jeg gjort en grønt iOS-utvikling i dag, kan jeg ikke forestille seg noe scenario som jeg ikke ville bare målrette mot iOS 7. Hva var lesekontroll av uken En brukervennlig UITableViewCell-underklasse som implementerer en sveipbar innholdsvisning som viser bruks knapper (lignende til iOS 7 Mail Application) Ukentlig Roundup CoreBackground er et sett med Objective-C-klasser inspirert av iOS Yahoo Weather App. Den gir iOS-lokaliseringsbaserte Flickr-bakgrunner med gaussiske uskarpe lyseffekter for iPhone. Som man ruller over forgrunnen, brukes en Gaussisk uskarp lys effekt til bakgrunnen. Dette gir en engasjerende plasseringsbasert UX, samtidig som du gir et lerret for å bruke lesbart innhold til forgrunnen. CoreBackground er en ikke-blokkerende hendelsesbasert Objective-C-blokk-API, og all gjengivelse skjer i backing-butikker for å bevare hoveddriftsløyfen. Gjør det grunnlaget for ditt neste iOS-prosjekt i dag. Ta opp skjermen til iOS Simluator. ADVARSEL: Dette prosjektet bruker en privat funksjon UIGetScreenImage () for å få skjermbilde. Du bør bare bruke dette for å generere prosjektvideo bare. Du bør ikke sende apper til appbutikken med dette.
No comments:
Post a Comment