Filer på iphone. Varje applikation har en egen katalog på telefonen.

Relevanta dokument
PROV. 12 Egenskaper (provavsnitt)

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

Classes och Interfaces, Objects och References, Initialization

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Övning 6. Ali Tofigh 24 Oktober, 2006

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Detaljbeskrivning av Player

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Grundläggande programmering med C# 7,5 högskolepoäng

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

E13 Behind the Wild. Dagens agenda. Cookies Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Namespaces Postludium

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

E13 "Behind the Wild"

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen, Algoritmer och datastrukturer

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

Föreläsning 2, vecka 8: Repetition

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

DAT043 - Föreläsning 7

public class BoundedCounter {

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Webbtjänster med API er

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Laboration 1: Figurer i hierarki

Objektorienterad programmering, Java, 5p TDBA63

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

OOP Objekt-orienterad programmering

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Föreläsning 18 Filer och avbildningar

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Tentamen TEN1 HI

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

OOP Objekt-orienterad programmering

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Webbtjänster med API er

Övningar Dag 2 En första klass

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Konstruktion av klasser med klasser

ID1004 Laboration 4, November 2012

Programmering B med Visual C

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Kopiering av objekt i Java

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Objektorienterad programmering D2

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Tentamen FYTA11 Javaprogrammering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Presentation av trafiksimuleringsprojektet

Kommunicerande system

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

Filsystem. Varför? Hur? För att kunna lagra data mer permanent än i RAM. Vettig organisation Vettiga namn

Bygg din egen verktygslåda till PC-DMIS. Workshop, PC-DMIS dagar 2015

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Tentamen i Programmering grundkurs och Programmering C

PROGRAMMERINGSTEKNIK TIN212

TDP005 Projekt: Objektorienterat system

tentaplugg.nu av studenter för studenter

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Konvertering från sträng. Winstrand Development

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

TENTAMEN I DATAVETENSKAP

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Systemvetarutbildningen och dataekonomutbildningen

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen *:58/ID100V Programmering i C Exempel 3

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Lösningar till tentamen i EDAF25

Lab5 för prgmedcl04 Grafik

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Utvecklande av träningsapp för ios 7

Klasshierarkier - repetition

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Föreläsning 2: Avlusning och antilustekniker

729G04 Programmering och diskret matematik

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Transkript:

Lagra data

Finns många sätt NSUserDefaults Property Lists Archiving CoreData SQLite Web Services... Vi kommer denna gång att titta på Property Lists och Archiving + lite hur man kan göra skriva text och binär data.

Filer på iphone Varje applikation har en egen katalog på telefonen. Applikationer får endast skriva till/läsa filer i sin egen katalog (närmare bestämt i någon av katalogerna Documents, Library, och tmp i denna) I simulatorn hittar man igen en applikations filer i katalogen ~/Library/Application Support/iPhone Simulator/User/Applications/<App_ID>

En applikations kataloger Kataloger i en applikations katalog. Documents och Preferences görs backup på.

Fixa en sökväg till de olika katalogerna Ta fram sökväg till en fil i Documents katalogen // Hämta listan över dokumentkataloger NSArray *documentdirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);! /* Hämta den enda dokumentkatalogen från listan (finns flera i MacOSX därav returnerar funktionen en array)*/ NSString *documentdirectory = [documentdirectories objectatindex:0];!! // Lägg till filnamnet NSString * fullpath=[documentdirectory stringbyappendingpathcomponent: filename];

Textfiler I NSString finns metoder för att skriva data - (BOOL)writeToFile:(NSString *)path atomically:(bool)useauxiliaryfile encoding: (NSStringEncoding)enc error:(nserror **)error... och för att läsa in det - (id)initwithcontentsoffile:(nsstring *)path encoding:(nsstringencoding)enc error:(nserror **)error;

Exempel NSString *str=@"hello World"; NSError *err; [str writetofile: path!! atomically: YES!!! encoding: NSUTF8StringEncoding!!! error: &err];

Binärfiler NSData Klass för att hantera binärdata -(BOOL)writeToFile:(NSString*) path atomically:(bool) (id) initwithcontentsoffile:(nsstring *) path;

Andra sätt Text och binärfiler i form av att skriva mha metoderna i NSString och NSData passar kanske inte så jättebra då vi har lite mer strukturerat data (som tex objekt som vi kan lagra undan). Vi kommer att titta på två sätt denna gång nämligen plists och archiving.

PLists Följande typer av data kan lagras i plists (property list) NSData, NSString, NSNumber, NSArray, NSDictionary Vi kan alltså fylla en NSArray eller NSDictionary med data (Så länge alla dessa kan lagras i en plist och sedan läsa tillbaka arrayen.

Exempel på att skriva till plist NSMutableDictionary *nsdict=[nsmutabledictionary dictionary]; [nsdict setobject:@"johan Eliasson" forkey: @"Name"]; [nsdict setobject:@"070-2378xxx" forkey: @"Phone"]; [nsdict writetofile:path atomically: YES]; //Och för att läsa tillbaka datat NSMutableDictionary *nsdict=[[nsmutabledictionary alloc] initwithcontentsoffile:path];

Archiving Används av XIB-filer (eg dessa är egentligen bara objekt som lagrats på fil) Kan användas för att spara undan grafer med sammanhängande objekt, För att få detta att fungera för egna klasser måste man låta klasserna implementera protokollet NSCoding NSCoding protokollet kräver att två metoder finns - (void)encodewithcoder:(nscoder *)encoder - (id)initwithcoder:(nscoder *)decoder

Klasser som implementerar NSCoding Många inbyggda klasser tex NSString, NSArray, NSDictionary, NSNumber, och de flesta användargränssnittsklasserna implementerar NSCoding och kan därför arkiveras. Se i dokumentationen för respektive klass om de implementerar NSCoding

Koda data När ett objekt tar emot meddelandet encodewithcoder: ska det koda alla attribut som den behöver spara för att kunna återskapas efter att ha skickat vidare meddelandet till sin superklass om denna implementerar NSCoding protokollet. För att koda attributen använder man metoderna för att koda data i NSCoder encode...: forkey: Observera att det inte är nödvändigt att spara alla attribut i alla situationer. Vissa värden är kanske inte viktiga för att kunna återställa tillståndet vid avkodningen.

Avkodning När ett objekt tar emot meddelandet initwithcoder: ska det först skicka meddelandet vidare till superklassen om denna implementerar NSCoding (eller annars anropa superklassens konstruktor) för att initiera ärvda attribut. Efter de ska den avkoda sina egna attribut. Använde man sig av forkey: metoderna i NSCoder för kodningen (rekommenderas) så kan avkodningen av attributen ske i vilken ordning som helst.

Exempel @interface Rectangle : NSObject <NSCoding> {! int width;! int height; }

encodewithcoder: -(void) encodewithcoder: (NSCoder *) encoder {! [encoder encodeint:width forkey:@"width"];! [encoder encodeint:height forkey:@"height"]; }

initwithcoder: -(id) initwithcoder: (NSCoder *) decoder { [super init];! //Kom ihåg att ev. objekt måste retainas! width=[decoder decodeintforkey: @"width"];! height=[decoder decodeintforkey: @"height"];!return self; }

NSCoder: urval av metoder för att koda data encodeint:forkey: Motsvarande metoder finns för double, float, BOOL encodeinteger:forkey: För NSInteger encodeobject:forkey: För att hantera andra objekt som implementerar NSCoding encoderootobject: För att koda startobjektet i grafen Det finns fler metoder kolla gärna dokumentationen för NSCoder

NSCoder: urval av metoder för att avkoda data decodeintforkey: Motsvarande metoder finns för double, float, BOOL decodeobjectforkey:

Läsa/skriva datat till fil Görs med klassen NSKeyedArchiver Exempel på att skriva: [NSKeyedArchiver archiverootobject:myobject tofile:filepath]; Exempel på att läsa in: myobject=[nskeyedunarchiver unarchiveobjectwithfile:filepath]; [myobject retain];