Core data sqlite vs binära alternativ
Jag är redan ganska bekant med relationsdatabaser och har tidigare använt SQLite (och andra databaser). Core Data har dock en viss allure, så jag överväger att spendera lite tid att lära mig det för användning i min nästa applikation. Finns det mycket nytta för att använda Core Data över SQLite eller vice versa Vad är proscons av varje Jag tycker det är svårt att rättfärdiga kostnaden för att lära Core Data när Apple inte använder det för många av dess flaggskeppsprogram som Mail. app eller iPhoto. app - istället väljer du SQLite-databaser. SQLite används också i stor utsträckning på iPhone. Kan de som är bekanta med att använda båda kommentera deras erfarenhet. Kanske är det som för de flesta saker frågan djupare än att bara använda den ena över den andra frågade 7 feb 09 kl 9:05 stängd som inte konstruktiv av casperOne 23 feb 12 kl 23:25 Som Det står för närvarande, den här frågan är inte bra för vårt QampA-format. Vi förväntar oss att svaren ska stödjas av fakta, referenser eller expertis, men denna fråga kommer sannolikt att kräva debatt, argument, omröstning eller utökad diskussion. Om du tycker att denna fråga kan förbättras och eventuellt öppnas igen, besöker hjälpcentret för vägledning. Om den här frågan kan omformuleras för att passa reglerna i hjälpcentret. snälla redigera frågan. Kan du lägga till en länk till en. wikipedia. orgwikiCoreData för att alla inte vet vad det är. ndash RSabet Feb 7 09 at 9:26 Observera att Core Data inte är och bör inte användas som en databas ndash user142019 6 aug 11 kl 12:10 Även om Core Data är en efterkommer av Apples Enterprise Object Framework. en objektrelationell mappare (ORM) som var tätt bunden till en relationell backend, Core Data är inte en ORM. Det är i själva verket en objektgrafikhanteringsram. Den hanterar ett potentiellt mycket stort diagram över objektförekomster, vilket gör det möjligt för en app att arbeta med ett diagram som inte helt passar in i minnet genom att fela objekt i och ut ur minnet efter behov. Core Data hanterar också begränsningar av egenskaper och relationer och maintins referensintegritet (t ex att hålla framåt och bakåtlänkar konsekventa när objekt läggs till från ett förhållande). Core Data är sålunda en idealisk ram för att bygga modellkomponenten i en MVC-arkitektur. För att implementera sin grafhantering händer Core Data att använda sqlite som en diskbutik. Det kunde ha implementerats med en annan relationell databas eller till och med en icke-relationell databas som CouchDB. Som andra har påpekat kan Core Data också använda XML eller ett binärt format eller ett användarskriven atomformat som en backend (även om dessa alternativ kräver att hela objektgrafen passar in i minnet). Om du är intresserad av hur kärndata implementeras på en sqlite-backend kanske du vill kolla in OmniGroups OmniDataObjects-ramverket, en öppen källkodsimplementering av en delmängd av Core Data API. BaseTen-ramverket är också ett genomförande av Core Data API med PostgreSQL som backend. Eftersom Core Data inte är avsedd att vara en ORM för sqlite, kan den inte läsa godtycklig sqlite schema. Omvänt bör du inte lita på att kunna läsa Core Datas sqlite-datalager med andra sqlite-verktyg. Schemat är en implementeringsdetalj som kan förändras. Således finns det ingen konflikt mellan att använda Core Data eller sqlite direkt. Om du vill ha en relationsdatabas använder du sqlite (direkt eller via en av Objective-C wrappers som FMDB) eller en relationsdatabasservern. Du kan dock fortfarande lära dig kärndata för användning som en ram för objektgrafikhantering. I kombination med Apples controller klasser och bindande kompatibla visa widgets kan du implementera en komplett MVC-arkitektur med mycket liten kod. svarat 7 feb 09 kl 18:27 Anmäl fmdb är inte en ORM, bara en objc wrapper runt sqlite3 C api ndash robottobor 7 feb 09 kl 20:57 Tack för fångsten Jag uppdaterar posten. ndash Barry Wark 7 feb 09 kl 21:27 Med iOS 5.0 får du den extra fördelen att du kan använda iCloud-filsynkronisering gratis om du använder Core Data. Om du använder SQLite direkt måste det vara mycket manuellt tinkering och implementering för att få det att synkronisera över iCloud. ndash konstigt aug 21 11 på 10:26 Försök githubpmurphyjamDBExempel Det är ett Xcode-projekt som använder SQLite. ndash Pat 22 maj 14 kl 21:28 Och med iOS 5.0 får du den extra fördelen att du kan använda iCloud-filsynkronisering gratis om du använder Core Data. Om du använder SQLite direkt måste det vara mycket manuellt tinkering och implementering för att få det att synkronisera över iCloud. iOS Databaser: SQLLite vs Core Data vs Realm Om du vill göra en bra app som kör snabbt och bara fungerar ( inga buggar tillåtna) måste du noggrant tänka på alla utvecklingsaspekter av din app. En av de aspekter du måste räkna ut är hur man lagrar och söker efter stora mängder data, så du ska noga använda en databas. De vanligaste alternativen för iOS-databaser är SQLite och Core Data och en relativt nyare spelare som heter Realm. Den här artikeln omfattar fördelarna och nackdelarna för varje alternativ och diskuterar processen att byta till Realm om du redan använder SQLite eller Core Data. SQLite är den mest använda databasmotorn i världen och dess öppna källkod också. Det implementerar en transaktionsbaserad SQL-databasmotor utan konfiguration och ingen server krävs. SQLite är tillgängligt på Mac OS-X, iOS, Android, Linux och Windows. Det ger ett enkelt och användarvänligt programmeringsgränssnitt som det står skrivet i ANSI-C. SQLite är också mycket liten och lätt och den kompletta databasen kan lagras i en plattformsplattformsfil. Skälen till SQLites stora popularitet är: Oberoende från en server Nollkonfiguration Säker åtkomst från flera processer och trådar Lagrar data i tabeller med en eller flera kolumner som innehåller en viss typ av data. Core Data är den andra huvudsakliga iOS-lagringstekniken tillgänglig för apputvecklare. Beroende på vilken typ av data och mängden data du behöver hantera och lagra, har både SQLite och Core Data sina fördelar och nackdelar. Core Data fokuserar mer på objekt än de traditionella databasmetoderna. Med Core Data lagrar du faktiskt innehållet i ett objekt som representeras av en klass i Objective-C. Även om de är fundamentalt olika, Kärndata: Används mer minne än SQLite Använder mer lagringsutrymme än SQLite Snabbare vid hämtning av poster än SQLite. Theres en ny (ish) spelare i staden som heter Realm. Realm utformades för att vara snabbare och effektivare än tidigare databaslösningar. Den här nya lösningen är en plattforms mobil databas som heter Realm. Den är tillgänglig i Objective-C och Swift, och är utformad för iOS och Android. De viktigaste upplevelserna av Realm är: Det är helt gratis, snabbt och enkelt att använda. Obegränsad användning. Arbeta på egen persistensmotor för snabbhet och prestanda. Vad som är riktigt bra med det är att du kan hantera allt arbete med ett par rader av kod. Realm är väldigt lätt att installera och snabbare att arbeta med jämfört med SQLite och Core Data. Databasfilerna kan också delas mellan iOS och Android. Om du utformar en app med många poster och för ett stort antal användare måste du vara särskilt uppmärksam på skalbarheten från början. Realm är bra på detta och det gör det möjligt för dig att hantera mycket data snabbt. För att komma igång med Realm behöver du bara åtminstone iOS 8 eller OS X 10.9. Äldre versioner stöder inte denna nya enkla lösning för hantering av lokal lagring och databaser. Byta till Realm Om du har arbetat med Core Data och vill fortsätta till Realm är processen enkel. Många utvecklare har gjort resan om ett par timmar. Observera att både Core Data och Realm behandlar data som objekt, så vad du behöver göra är att refledera Core Data-koden för att använda Realm. Ta bort kärndataramen. Leta reda på den del av din kod som innehåller Core Data-kod och refactor dem. De beskriver ett bra knep för att kasta ett kompilatorfel för varje kodlinje med hjälp av kärndata Ta bort koden för koden för grundläggande data. Theres kommer att vara en del av Core Data setup code någonstans i din app och du måste bli av med allt. Realm konfigureras automatiskt så fort du kommer åt ett Realm-objekt för första gången. Du kan välja var du vill lagra Realm-datafilen, och den är fortfarande valfri vid körning. Migrera dina modellfiler. Du kan enkelt konvertera hanterade objekt underklasser till Realm. Realm hanterar egendomssökord internt (du behöver inte ange dem), vilket gör klasshuvudet mer minimalt. Du kan också säkert ta bort alla NSNumber cruft eftersom Realm stöder enkla numeriska data (NSInteger och CGFloat). Det finns också begränsningar för Realm. Till skillnad från Core Data, vars objekt har NSManagedObjectID för att identifiera objekt unikt, lämnar Realm detta till dig som utvecklare. För det andra kan den nuvarande versionen av Realm inte hantera objektegenskaper med ett nollvärde. Detta är ett mindre besvär, men utvecklarna lovar att nästa version av Realm inte kommer att ha detta problem. Migrera dina skrivoperationer. Realm8217s spara operationer är lite annorlunda än i Core Data och du behöver bekanta dig med detta. När Realm-objekten läggs till i ett Realm-objekt kan de inte ändras. Detta säkerställer konsistens av data i olika trådar. För att kunna ändra egenskaperna måste objektet där dessa sparades vara i en skrivtransaktion. Migrera dina frågor för att kunna hämta dina uppgifter efter behov. För att hämta en fil, i Core Data behöver du cirka 10 rader kod. I Realm kan du göra samma sak med bara en rad. Migrera dina användares produktionsdata för aktiva appar som har skapats i Core Data, du kan koppla om Core Data-ramen tillbaka till appen, hämta användardata och vidarebefordra den till Realm. En enklare lösning för utbytbar användardata är att ta bort alla Core Data Save-filer och starta nästa gång appen är öppen. Nyckeln är att hålla din designprocess så enkel med de bästa teknikerna och verktygen. När du har investerat tid för att ställa upp din försökta och sanna processen, låt inte attraktionen till ny ta dig självklart. Må det nya arbetet vara en del av din process och tiden är detektorn av det som inte är värdig. Post navigationHello och välkommen till vår veckovisa kampanj. Denna vecka fortsatte Brent Simmons sin fantastiska serie artiklar på sin blogg om att bygga Vesper, den noterande ansökan som skapades av honom, Dave Wiskus och John Gruber. Han erbjuder mycket stor inblick i att fatta beslut om SQLite3 vs Core Data. När jag talade för mig själv, spenderade jag en hel del tid den senaste veckan med ett handtag på Marco Arments SQLite ORM-bibliotek, FCModel. Och jag måste säga, trots vissa grova kanter (spoiler alert: det betraktas fortfarande alfa), jag tycker om att det är en mycket bättre än Core Data. Visst, det gör inte så mycket, men det erbjuder också en mycket enklare konceptmodell, och faktiskt känns som om du interagerar med en databas istället för ett galet objektgrafsystem. Din körsträcka kan variera Jag är säker på att det finns många människor som faktiskt gillar Core Data, men jag kan fortfarande inte räkna mig själv bland dem. Under tiden har folk bakom objc. io lagt ut ett annat fantastiskt problem med mycket bra inblick i iOS 7. Som jag sa månader sedan, är iOS 7 själv ett stort steg framåt för plattformen, men det kommer att hamna i jämförelse med De fantastiska nya applikationerna gör det möjligt för människor som att vi ska skapa. Om jag gjorde någon greenfield iOS-utveckling idag kan jag inte föreställa mig något scenario där jag inte bara skulle rikta in iOS 7. Vad var läsning av veckans kontroll En lättanvänd UITableViewCell-underklass som implementerar en swipeable innehållsvy som exponerar verktygsknappar (liknande till iOS 7 Mail Application) Weekly Roundup CoreBackground är en uppsättning objektiv-C-klasser inspirerade av iOS Yahoo Weather App. Det ger iOS-platsbaserade Flickr-bakgrunder med gaussiska oskärpa ljuseffekter för iPhone. När man rullar över förgrunden appliceras en Gaussian suddig ljus effekt på bakgrunden. Detta ger en engagerande platsbaserad UX samtidigt som du tillhandahåller en duk att tillämpa läsbart innehåll på förgrunden. CoreBackground är ett icke-blockera händelsebaserat Objektiv-C-block-API och all återgivning sker i backing-butiker för att bevara huvudlöksbanan. Gör det till grund för ditt nästa iOS-projekt idag. Spela in skärmen på iOS Simluator. VARNING: Detta projekt använder en privat funktion UIGetScreenImage () för att få skärmdump. Du bör bara använda detta för att endast skapa projektvideo. Du bör inte skicka appar till appbutiken med det här.
Comments
Post a Comment