Kan noen forklare meg hva den grunnleggende forskjellen er mellom Core Data tydeligvis, en datalager og en database som SQLite eller MySQL. Jeg jobber med å skrive en iPhone app og trengte et bord med statiske data å vise jeg trodde kjernedata ville være et godt valg for dette, så jeg fikk alt satt opp og fungerte så langt som databasen im beklager - data BUTIK gikk, og deretter gikk for å prøve å importere dataene mine det var i en Excel-fil som jeg eksporterte til CSV Jeg tenkte det bør være en rettferdig prosess som jeg har gjort i SQLite og andre databaser mange ganger, men som det viste seg etter mye forskning, var den eneste offisielle måten å gjøre dette på å skrive en parser spesifikt for mine data. Da jeg spurte om dette på Apple-utviklerforaene, svaret jeg fikk, var i utgangspunktet. Hva slags idiot er du å tro at du muligens kunne importere data direkte uten å måtte skrive kode for å gjøre det? Kernedata er databasen - det er data STORE For livet av meg, skjønt, jeg kan ikke se det distinkte ion På alle måter har jeg sett på det. Kjerne data oppfører seg akkurat som en database, med en fancy måte å få tilgang til den og nok abstraksjon at den kan bruke en rekke filformater for faktisk lagring av data. Faktisk var jeg til slutt i stand til å importere dataene mine ved hjelp av en enkel SQLite-kommando, så jeg forstår ikke hvorfor konseptet var så fremmed for respondentene til mitt opprinnelige spørsmål. Så hva mangler jeg her Hva er så fundamentalt forskjellig fra en datalager fra en database som gjør Konseptet med enkel dataimport er helt fremmed til de som kjenner teknologien. Skrevet 10. september kl. 17 14.Core Data er ikke bare et middel for å vedvarende lagre data til og fra disk, slik det er SQL Core Data s sanne funksjon er å gi den komplette modelllag for Model-View-Controller-appdesignet som Apple API bruker som sådan Kjernedata er først og fremst en objekthåndterer med utholdenhetsalternativer takket være siden. En objekttegning er en samling av levende objekter i minnet I Core Data , den se er de administrerte objekter De kalles klarte objekter fordi objektsammenhengskonteksten observerer objektene og sørger for at de er i de statene og relasjonene som datamodellen sier de burde være i. Hoveddata gir utholdenhet, men akkurat det alternativet er for en bestemt implementering er i stor grad skjult. Du kan til og med bruke samme datamodell og klarte objekter med ulike persistensmetoder, en gang i samme app. Hovedforskjellen med SQL er at SQL skriver de faktiske dataene til disk mens Core Data serialiserer levende objekter når du ser på en sqlite-butikk i Core Data du ser på objekter som er tatt fra hverandre og frysetørket. Tydeligvis krever fryse-tørkeobjekter et ganske spesifikt dataformat i sqlite-butikken, slik at Core Data-butikken bruker sitt eget tilpassede skjema som i stor grad det samme uansett detaljene i butikken. Det er derfor du ikke kan bytte i noen gammel SQL-fil og forventer at Core Data importerer den. SQL-filen er r ows, tabeller og kolonner av data og ikke spesialiserte tabeller, kolonner og rader, brukes til å rekonstruere frysetørkede objekter. Siden Core Data først og fremst er en objektgrafist, er det eneste støttede og pålitelige middel for å importere data å skape objektet - graph I tilfelle av en SQL-fil betyr det at du leser SQL-dataene ved hjelp av SQL api og deretter genererer administrerte objekter fra dataene og lagrer dem deretter til en vedvarende butikk. Denne delen er mer arbeid, men du sparer tid for å integrere dataene i resten av appen, oppgradering av data og gevinster i pålitelighet og vedlikehold. De burde nettopp ha pekt på Wikipedia-artikkelen om Core Data. Ifølge denne artikkelen tillater det at data som er organisert av relasjonsenhetens attributtmodell, blir serialisert i XML-, binær - eller SQLite-lagre Dataene kan manipuleres ved hjelp av høyere nivåobjekter som representerer enheter og deres relasjoner. Kernedata administrerer den serialiserte versjonen, gir objektets livssyklus og objektgrafeman drift, inkludert utholdenhet Core Data-grensesnitt direkte med SQLite, isolerer utvikleren fra den underliggende SQL. Jeg antar at det er faktumet at Core Data administrerer den serialiserte versjonen, som betyr at du ikke kan importere data direkte Det er sannsynligvis at du ikke kan importere data direkte inn i SQLite på en slik måte at Core Data kan klare det, selv om du sannsynligvis kan importere data direkte til SQLite på en eller annen måte. Ansatt 10. september kl. 17 32. Hoveddata er ikke en datalager, en datalager er en del av Core Data Core Data er nærmere relatert til et Object Relational Mapping ORM-verktøy. Kernedata har faktisk muligheten til å bruke SQLite for det s datastore, men du kan også velge XML-filer, proprietær format eller skrive din egen datastore. Ikke sikker på hvordan du klarte for å importere dataene dine med en SQL-import, burde ikke være kompatibel med Core Data siden Core Data oppretter et proprietært SQL-databaseskema som inneholder massevis av metadata. answered 10. september kl. 17.30.Simple mens skjemaet er proprietært, er det sn othing veldig uvanlig om det Når du har latt Core Data-stakken lage databasen, er det åpenbart hvilken tabell og kolonner som inneholder de faktiske dataene, og helt grei å lage en filtabel. Du må bare massere dataene dine litt for å matche skjema kolonnordrer og lignende De andre dataene spiller ingen rolle når du importerer ibrewster 10 september 11 kl 17. 41. Det er bedre å tenke på Core Data som en objektbutikk og en database som datalager. Kernedata er bra når du har en Forskjellige typer objekter, med relasjoner til hverandre. Det kjente eksempelet er et selskap med ansatte, som har sjefer og rapporter, tilhører avdelinger, tildeles klienter, prosjekter, etc. har tidsplaner, går til møter. Ansatte kan få tilordnet osv. Selv de typer relasjoner som defineres varierer fra tid til annen. Det er mer tungvektsprosess, selv med Core Data, men Core Data gjør det enklere enn med en rå database. Hvis du bare har data, og ikke objekter, er det lettere å bruke endatabase For eksempel hvis du bare har en tabell med elementene med atomvekter, etc, vil du kanskje bare bruke en database. For din applikasjon lyder det som om du bare har ett bord. Det vil være enkelt å bare bruke SQLite, som er tilgjengelig, så bruk det hvis det er mer praktisk. På den annen side har iOS SDK noen forhåndsbygde funksjoner som interagerer med Core Data. Hvis du bruker SQLite, får du ikke de. Så du kan unngå tilpasset kode for å importere dataene dine, men må skrive skreddersydd kode for å vise dataene dine Tøff flaks Når du lager programvare noen ganger må du skrive kode. Vi vet det. Jeg er allerede ganske kjent med relasjonsdatabaser og har brukt SQLite og andre databaser i det siste. Men Core Data har en viss allure, så Jeg vurderer å bruke litt tid til å lære den til bruk i mitt neste program. Er det mye fordelen med å bruke Core Data over SQLite eller omvendt Hva er fordelene for hver av dem. Jeg finner det vanskelig å rettferdiggjøre kostnadene ved å lære Core Data når Apple ikke bruker det for mange av sine flaggskipapplikasjoner som eller - i stedet for å velge SQLite-databaser, er SQLite også mye brukt på iPhone. Kan de som er kjent med å bruke begge kommentarene til deres erfaring. Kanskje, som med de fleste ting, er spørsmålet dypere enn bare å bruke det ene over det andre. spurte 7 februar 09 kl 9 05. lukket som ikke konstruktivt av casperOne 23. feb 12 kl 23 25. Som det står for øyeblikket, er dette spørsmålet ikke en god passform for vårt QA-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 vær så snill. rediger spørsmålet. Kan du vennligst legg til en lenke til for alle som ikke vet hva det er RSabet Feb 7 09 på 9 26. Legg merke til at kjerne data ikke er og bør ikke brukes som database user142019 aug 6 11 kl 12 10. selv om kjerne Data er annonse eskalert av Apples Enterprise Object Framework, en objekt-relasjonsmapper ORM som var tett knyttet til en relasjonsbackend, Core Data er ikke en ORM Det er faktisk et objektgrafikkledelsesramme Det styrer en potensielt veldig stor graf av objektfelter , 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. Core Data håndterer også begrensninger på egenskaper og relasjoner og maintins referanseintegritet, for eksempel å holde fremover og bakoverforbindelser konsistente når objekter blir lagt til fjernet fra et forhold Core Data er dermed et ideelt rammeverk for å bygge modellkomponenten i en MVC-arkitektur. For å implementere sin grafikkadministrasjon, 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-relasjonsdatabase som CouchDB Som andre har påpekt, kan Core Data også bruke XML eller et binært format eller en brukerskrevet atom format 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-rammeverk, 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å å kunne å lese Core Data s sqlite datalager med andre sqlite verktøy skjemaet er en implementeringsdetalj som kan endres. Da 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 A pple s controller klasser og viktige verdier bindende kompatible visning widgets, kan du implementere en komplett MVC arkitektur med svært lite code. answered 7 februar 09 på 18 27. Notat fmdb er ikke en ORM, bare en objc wrapper rundt sqlite3 C api robottobor Feb 7 09 ved 20 57. Takk for fangsten jeg vil oppdatere innlegget 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 manuell tinkering og implementering for å få det til å synkronisere på tvers av iCloud merkelig. Aug 21 11 på 10 26.Try Det er et Xcode-prosjekt som bruker SQLite Pat 22 mai kl 14 på 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 på tvers av iCloud. For de siste nyhetene og utviklingene, se nyhetssiden. er en leverandør for SQLite. ble startet av Robert Simpson Robert har fortsatt begått privilegier på dette depotet, men er ikke lenger en aktiv bidragsyter. Utviklings - og vedlikeholdsarbeid er nå for det meste utført av SQLite Development Team. SQLite-teamet er forpliktet til å støtte langsiktig. Legacyversjoner kan fortsatt bli funnet på SourceForge selv om det ikke har vært noen oppdateringer der siden april 2010. Det er ikke noe forum på dette nettstedet, men støttesiden har en oppdatert liste over supportalternativer. Vennligst se nedlastingssiden for en komplett liste over nedlastbare pakker og informasjon på deres bruk. Dokumentasjon for. Dokumentasjonen som svarer til den nylig utgitte versjonen som inneholder detaljert informasjon for alle offentlige typer, metoder, egenskaper og hendelser, er sjekket inn i depotet i Microsoft Compiled HTML Help CHM format. Det kan også lastes ned direkte via webgrensesnittet til depotet. For de siste nyhetene og utviklingene, se nyhetssiden. er en leverandør for SQLite. ble startet av Robert Simpson Robert har fortsatt begått privilegier på dette depotet, men er ikke lenger en aktiv bidragsyter. Utviklings - og vedlikeholdsarbeid er nå for det meste utført av SQLite Development Team. SQLite-teamet er forpliktet til å støtte langsiktig. Legacyversjoner kan fortsatt bli funnet på SourceForge, selv om det ikke har vært noen oppdateringer der siden april 2010. Det er ikke noe forum på dette nettstedet, men støttesiden har en oppdatert liste over supportalternativer. Vennligst se nedlastingssiden for en komplett liste over nedlastbare pakker og informasjon på deres bruk. Dokumentasjon for. Dokumentasjonen som svarer til den nylig utgitte versjonen som inneholder detaljert informasjon for alle offentlige typer, metoder, egenskaper og hendelser, er sjekket inn i depotet i Microsoft Compiled HTML Help CHM format. Det kan også lastes ned direkte via webgrensesnittet til depotet. Før utgivelsen av OS 3 0 på iPhone var SQLite valget for databaseimplementer ntation på iPhone Siden tillegg av kjerne data til iPhone SDK, er det ikke lenger det eneste alternativet å bruke SQLite med lavt nivå C-funksjon, og nå er et spørsmål som ofte blir spurt om hva du skal bruke. Først la oss ta en titt på bruk av SQLite directly. Relational Database System Mulighet for kryssplattform kompatibilitet Mange tidligere iPhone database eksempler ble skrevet ved hjelp av SQLite Objective-C wrappers som FMDB er ganske enkelt å bruke. Nå på Core Data. Can lagre data i sin egen binære eller SQLite lagringsformat Kan serialisere objekter Mye høyere nivå enn å bruke SQLite direkte Ikke en RDBMS du kan faktisk bare lagre ting direkte. Nå er det virkelige spørsmålet som er enklere å bruke Vel, det avhenger egentlig av hva du gjør I en app jeg nylig har laget alt jeg måtte gjøre var å lese små mengder data i rekkefølge fra en SQLite-database, siden dette er en enkel oppgave, brukte jeg bare FMDB sammen med iPhone SQLite. Nå, hvis jeg trengte å gjøre noe med dataene uten å lese det, Core Da Ta kan gjøre alt dette mye enklere, og jeg anbefaler at du bruker det. Konklusjon Core Data gjør bare så mange ting så mye lettere at jeg vil anbefale å bruke det med mindre du allerede har eksisterende kode, eller gjør bare den mest grunnleggende databasen.
No comments:
Post a Comment