Core data sqlite vs binära alternativ


om blob-filerna i en sqlite är serialiserade kan det innebära att serialisering är bäst för att få de minsta bitarna av binär data. Du kan också använda NSCoding för conditionalObjectEncodings, vilket tar bort dubbletter av förekomster i levande objekt i minnet. Anledningen till att jag frågar den här frågan är att alla talar och föreslår Coredata-SQLite, men jag ser inte den här fördelen utan att bygga mot en stor datakälla och du kan inte lägga allt i minnet. Jag har rätt ndash LolaRun Mar 5 12 vid 18:12 Det finns alltid en balans mellan minne och prestandaoptimering. Med NSCoding eller din anpassade binära representation har du mycket mer kontroll över bitarna som skrivs till lagringen eller lagras i minnet, men för detta måste du betala priset för kodning mer, så effektiviteten av koden kommer att bero på din förmågor. Med CoreDataSQLite implementeras många användbara saker för dig på ett effektivt sätt (sökning, frågande, indexering, anslutningar, etc.). Obs! CoreData-objekt laddas endast i minnet vid behov, annars bor de i db. ndash MrTJ Mar 6 12 kl 8:26 Utmärkt. Så om jag använder quotApplicationDocumentquot-mall av program, och om jag behöver spara och öppna dokument, skulle jag verkligen inte behöva fördelarna med CoreData, eftersom jag måste ladda allt i minnet, och behöver inte fråga och. databasfunktioner. Den stora skillnaden är utvecklingskostnaden. Vilket i mitt fall inte är ett bakslag. Tack så mycket. I39ll vänta lite, för att locka fler svar och fler diskussioner innan du accepterar ett svar ndash LolaRun Mar 6 12 på 13:41 Theres alltid en impedans mellan objekt och relationella strukturer. Jag föredrar alltid objekt eftersom dataåtkomst typiskt är en bråkdel av funktionaliteten i din app. Med NSCoding får du enkelhet, enkel debugging och kontroll med mycket liten kod för att skriva ändå. Du har också flexibiliteten att integrera NSCoding i dina databasstrukturer. NSCoding är en persistensmekanism för att spara objekt. Om du lägger till index till dina relationella strukturer för sökoptimering och underhåll av objektstrukturer, tror jag att du får det bästa av alla världar till mycket låg kostnad och enkel underhåll. svarat 14 aug 13 kl 20: 19Core Data Image Caching Publicerad den 16 mars 2012 av Hawk iMedia Det är ett vanligt mönster för en app att göra något med data som inte är lokal. Att behålla anständigt appresultat när du hämtar data är en utmaning (och inte i fokus för denna artikel). Att hålla data, och tillräckligt med det, för senare användning och för att förhindra att behöva hämta det igen, är en annan utmaning. Det finns uppenbara lösningar, några enkla och några inte, och alla med sina egna fördelar och nackdelar. Vad är Caching Caching är helt enkelt att hålla någonting runt för senare användning som var 8220hard8221 för att komma i första hand. Det här kan vara extern data, ett beräknat värde eller något som du inte behöver förvärva mer än en gång om du kan undvika det. Caching bör dock inte betraktas som en gränslös process. Därmed menar jag att du bara kan cache allt för alltid. Du måste ha ett sätt att rensa cacheminnet periodiskt baserat på någon algoritm som är meningsfull för din ansökan. En vanlig (och enkel) algoritm är minst nyligen använd eller LRU. Med denna algoritm är teorin att de saker i din cache som har använts minst är kandidater som ska rensas bilda cachen baserat på ett visst tröskelvärde. Du kan tänka dig att på en mobil enhet är det viktigt att rensa cacheminnet på grund av de inneboende rymdbegränsningarna. Du kan också välja att cache en begränsad mängd data (men you8217d behöver fortfarande veta vad som ska släppas om cachen blir för stor.) Cachingmål Skälen till cachen är ganska enkla: Men hur uppnås det? Det beror delvis på vad en rimlig definition av 8220performance8221 är för din app. Prestanda som det hänför sig till cachen kommer att framgå på flera olika ställen: Initial cache-belastning Cache-åtkomst Cache-rensning Cache-Spara Så tydligt som I8217ve gjorde denna lista visar det sig att var och en av dessa saker i viss mån är relaterad till varandra. Cache-rensning är till exempel något du kan utföra under cachelastning. Frekvensen av cache-sparande bör vara relaterad till något som hur 8220dirty8221 cacheminnet är (hur många saker har ändrats sedan den senaste spara) eller hur mycket tid som har gått sedan den sista sparade. Implementeringsalternativ Det finns flera alternativ för att implementera en cache. Ditt val beror mycket på vilken typ av data du cachar, hur mycket data du behöver cachera, hur du hanterar din cache (dvs. spolning) och förmodligen en massa andra saker som är specifika för din app. De uppenbara valen inkluderar: Dictionary-databas eller en kombination av dessa Let8217s ser på var och en. Ordbok Att använda en ordlista verkar som ett uppenbart val. De är lätta att använda och lätt att förstå. För mycket små dataset kan detta vara ett bra val. Men när din dataset får 8220large8221 börjar du notera prestanda, speciellt när du behöver ladda den, rena den eller spara den. Att använda en ordlista är säkert enkelt och snabbt. Så, att läsa och skriva en ordlista är enkelt, men när din dataset växer kommer dessa åtgärder att bli långsamma eftersom du8217 läser och skriver hela ordlistan. Fördelar: Snabbt och enkelt, speciellt för små dataset Nackdelar: Inte skalbar, dvs prestanda saktar när datasetet växer. Individuella filer kan vara en förbättring. Om you8217re caching säger miniatyrbilder kan du utforma ett schema för att skriva varje fil till filsystemet på ett sätt som senare kan du hitta det igen. Detta har fördelen att du bara läser och skriver en enda fil i taget. Det har nackdelarna att du kan lägga en tung belastning på filsystemet och det är svårt, utan ytterligare metadata lagrade på annat håll, att hantera cachen när det gäller att rensa gamla data eller begränsa it8217s storlek. Detta tillvägagångssätt är lite mer komplicerat än att använda en ordlista, men fortfarande enkel att förstå och hantera. Fördelar: Fortfarande enkelt och bör vara relativt snabbt för att lagra och hämta data utom i sällsynta fall Nackdelar: Svårt att hantera cache-rensning Du undrade nog när I8217d kom till CoreData En databas ger en fin abstraktion till dina data, för att inte tala om slumpmässig åtkomst till uppgifterna och delegeringen av vissa 8220hard8221 uppgifter till den underliggande databasen. CoreData är faktiskt användbart för caching, jag har lärt mig, på grund av fördelarna med databasliknande operationer. (Låt mig påminna om det i kommentarerna: CoreData är inte en databas.) Vid mer än ett tillfälle har jag nu använt en CoreData-baserad cache för att lagra bilddata lokalt. Prestationsförmånerna ensamma var värda det. Men jag började inte med CoreData. Jag började faktiskt med en ordbok. I en app lagrar vi ungefär 3 MB eller mer av bilddata, med en 30 dagars utgång på enskilda poster. Det visade sig att försöka läsa eller skriva så mycket data som en ordlista var långsam. Och värre, hela ordlistan var tvungen att kryssas för att hitta poster som skulle löpa ut, vilket gjorde saken värre. Ett exempel Som exempel, ville jag påpeka några saker om min CoreData-bildcache, som nu används i ett par appar. Modellen började ganska enkelt: Jag var en CoreData noobie när jag först utvecklade det här, så jag definierade bilddatatributet som Binary Data. Detta fungerade, men krävde att jag gör arbetet i min kod för att omvandla data till en UIImage. Det visar sig att CoreData kan göra denna typ av omvandling för dig som använder attributtypen Transformable. Mer om det senare. Egenskapen ImageUrl är faktiskt nyckeln för varje post. Och sistnämndaTimestamp är nyckeln (så att säga) för att hantera cache-rensning. När min app startar och modellen och tillhörande komponenter initialiseras är det första som görs att rena cacheminnet av allt som har gått ut. Detta görs med en fördefinierad hämtningsförfrågan: Och följande kod: Det finns många saker att gilla om den här koden (tror jag). För den är den kompakt. Det finns inget behov av att iterera över hela cachen för att hitta de poster som vi är intresserade av. Faktum är att vi bara låter CoreData hantera det. Och vi måste faktiskt röra ett mycket litet antal objekt (om några) för att radera dem. I slutändan hanterar CoreData vilka objekt som är smutsiga eller raderade, och gör det rätta. För vad it8217s är värt är koden för att hämta poster baserat på deras webbadress likaså kompakt. Vi använder en annan fördefinierad hämtningsförfrågan för det. Som en optimering ville jag sluta lagra binär data (och konvertera den i min kod till UIImage) och istället använda en transformerbar. Det verkade rakt framåt: Skapa en ny version av modellen, ändra datatyp Binär data till transformerbar och låt lättvikt migration ta hand om resten. Tyvärr fungerade det inte. Here8217s modellen jag slutligen kom fram: liksom kartläggningsmodellen för migreringen: Det här möjliggjorde lättviktsmigration, men jag var tvungen att göra lite extra arbete i min kod för att flytta data från data till den nya attributbilden av typ Transformable: Den variabla posten är ett hanterat objekt som nyligen hämtats från CoreData. För det fall det finns gamla data som hänger runt, måste vi ange bildattributet till en UIImage som skapats med hjälp av den data. CoreData tar hand om att konvertera tillbaka till binära data och lagra den på så sätt. Och i framtiden kommer bildattributet bara att vara en bild som vi kan manipulera. Det här är kanske inte det mest effektiva sättet att ha gjort det här, men det verkade fungera och jag kunde inte hitta en annan lösning. Vi ställer också in entry. data till noll så att vi don8217t har två kopior av binärdata i CoreData och så gör vi inte alltid 8220upgrade8221 för varje bild. It8217s värda ingenting, åtminstone att denna lilla data migrering bara görs som bilder krävs av användargränssnittet. Så smärtan av detta sprids ut som appen används. Och det finns alltid en chans att cacheposter kommer att åldras innan de någonsin konverteras med den här koden. Jag tar tröst i det. Slutsatser CoreData rocks När du väl har gått över standard men nödvändig boilerplate-kod måste du skriva för att använda CoreData i din app, det är ganska trevligt att använda och verkligen frigör dig från att oroa dig för mycket om hur du hanterar data och låter dig fokusera på hur du behöver använda data i din app. För cache-ändamål tycker jag att det är ett riktigt bra alternativ och det verkar fungera bra för mig hittills. Vad är dina tankar om caching med CoreData Låt mig veta i kommentarerna. Dela det här: Tom Wilson säger: Skulle det inte vara bättre att lagra bilddata på disken och bara använda kärndatobjekten för att hålla reda på metadata (url, senast använda stämpel) och åsidosätta sedan metoden preparationForDeletion till städa upp filerna För att lagra filerna så att du enkelt kan hitta dem och få dem unika är det enkelt 8211 gör bara en hash ur antingen url eller kärndata-id (se till att det är en permanent och inte den tillfälliga: P) Att sätt att du kan hämta och slinga igenom och göra vad som helst med cacheminnet, utan att kärndata kontinuerligt hämtar bilddata till ram. Ska vara en rimlig prestationsökning utan mycket ansträngning8230 Hej Tom-Tack för det förslaget it8217s en fin optimering. En detalj som jag lämnade ut ur min artikel är att när jag hämtar ett hanterat objekt från CoreData, håller jag det i en minnesordlista. Så snart bilddata (som en del av det hanterade objektet) läses in, är det8217s i minnet. Så nästa gång det behövs krävs det att det inte behövs. Med detta sagt är ditt förslag fortfarande giltigt och flyttar i riktning mot att kombinera tillgängliga cachingtekniker till intressanta hybridlösningar. Tack Karl Puder säger: Har du behållit fältet 8220data8221 eftersom det redan existerade, för kompatibilitet med tidigare versioner, eller av någon annan anledning tror jag att jag vill hämta innehållet för en URL och göra det direkt till en bild, eftersom begäran beror förmodligen på att vi måste visa den saken på skärmen just nu. Det var ett drag av desperation. Mitt hopp var att den lätta migreringen automatiskt skulle migrera den ursprungliga modellen (url, data, tidsstämpel) till den nya modellen (url, bild, tidstämpel) med en kartläggningsmodell som kartlade databilden. Men det fungerade inte. Så jag gjorde den nya modellen innehåller alla de gamla attributen för model8217 plus ett nytt attribut, bild. Kartläggningsmodellen kartlägger de gamla attributen direkt till sina motsvarigheter i den nya modellen och sätter det nya bildattributet till 0 (eller noll, effektivt). Sedan kollar jag efter ett nollbildvärde i det hanterade objektet och omvandlar i kod från datattributet till bildattributet och ställer in dataattributet till noll. Det här är kanske inte 8220right8221 sättet att ha gjort detta, men det fungerade. Detta är enklare om du använder relationer för stora dataobjekt (BLOB). Som med alla prestationsproblem skulle jag rekommendera att använda den enklaste metoden tills det är ett prestandaproblem. I8217ve varit mycket lyckligare när jag börjar arbeta först och sedan använda profildrivna optimeringar. Dessutom, efter 20 år med programmering, är det också fantastiskt hur snabbt optimeringar med bibliotek eller OS8217s föråldrade applikationsnivåoptimeringar. Hej Todd - Tack för din kommentar. När det gäller att använda de enklaste metoderna först accepterar jag. Men i det här fallet, där jag började använda ett NSDictionary, fann jag att läsning och skrivning blev en riktig flaskhals, vilket var anledningen till att jag började titta på CoreData. Dylan Neild säger: Jag tror att den enda sak att tänka på här är iCloud Backup, speciellt om du använder kärndata på iOS. Specifikt, om du lagrar din Core Data sqlite-fil i dokumentkatalogen kommer iCloud automatiskt att säkerhetskopiera den när användaren ansluter telefonen till strömmen (om de har konfigurerat). Problemet med att lagra blob-data i den sqlite-filen är att denna enda fil växer i storlek med varje blob tillagd och I8217d tror att iCloud skulle sedan säkerhetskopiera hela filen i sin tur nej Det kan bli orimligt långsamt datakrävande när man lägger till en 5KB bild till en 500MB databas betyder en ny 500MB5K backup. Om inte Apple har någon form av 8220våg8221-säkerhetskopieringsstrategi vid hantering av Core Data sqlite-filer. De gör radnivånssynkronisering för iCloud-synkronisering så det är 8282 möjliga 8211 men jag kan8217t hitta någon hänvisning till detta var som helst. Dylan - Du är helt korrekt. I implementeringarna av detta CoreData-cachningssystem har jag uttryckligen INTE lagt cachefilen i dokumentkatalogen för exakt orsakerna du markerar. Det är ju en cache. Så rätt plats att sätta filen är i LibraryCaches, så iOS kan återvinna det här rummet om det behövs. Det finns en funktion i iOS 5.0.1 som låter en app ställa in en 8220nos backup8221-bit på en fil. That8217 är ett annat sätt att berätta för systemet att inte säkerhetskopiera någonting. I princip är tumregeln att om användaren skapade data borde den gå in i Dokument. Om de didn8217t och det enkelt kan rekryteras eller återställas, ska det gå iniOS Databaser: SQLLite vs Core Data vs Realm Om du vill göra en bra app som kör fort och bara fungerar (inga buggar tillåtna) måste du tänka på alla utvecklingsaspekter av din app noggrant. En av de aspekter du måste räkna ut är hur man lagrar och söker efter stora mängder data, så ska du 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ördelar och nackdelar med 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. Den 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 fullständiga 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 som är 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åll av ett objekt som representeras av en klass i Objective-C. Även om de är fundamentalt annorlunda, Kärndata: Användar 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 bli 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 att du snabbt kan hantera mycket data. 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 den här nya enkla lösningen 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 kärndatainställningskoden. 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 fastighetssö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-ramverket tillbaka till appen, hämta användardata och vidarebefordra den till Realm. En enklare lösning för utbytbara användare data ä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 in 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 navigationiOS Databasjämförelse: SQLLite vs. Core Data vs. Realm Om du vill göra en bra app som kör fort 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å ska du noga använda en databas. De vanligaste alternativen för iOS-databaser är SQLite och Core Data, plus en relativt nyare spelare som heter Realm. Den här artikeln omfattar fördelar och nackdelar med 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. Den 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 fullständiga 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åll av 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 bli 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. Den stora uppgången av Realm är: Det är helt gratis Snabbare och lätt att använda Obegränsad användning Fungerar på egen motståndskraft för snabbhet och prestanda. Det är verkligen bra 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 att du snabbt kan hantera mycket data. 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 den här nya enkla lösningen 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å de delar 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 kärndatainställningskoden. 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 fastighetssö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 kärndata vars objekt har NSManagedObjectID för att identifiera objekt unikt, lämnar Realm det här 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. Realms Save-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-ramverket tillbaka till appen, hämta användardata och vidarebefordra den till Realm. En enklare lösning för utbytbara användare data ä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 enkel med de bästa teknikerna och verktygen. När du har investerat tid för att ställa in 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 låta tiden bestämma vad som inte är värdigt. Är du en utvecklare Missa inte den månatliga Couchbase Developer Community Newsletter, som täcker de senaste rubrikerna på NoSQL och mycket mer. Brakt till dig i samarbete med Couchbase. Gilla denna artikel Läs mer från DZone

Comments

Popular posts from this blog

Gt alternativ binära alternativ

The best binära alternativ mäklare 2017 ford

Berezhnoi forex handel