iOS: Hur jobba med ett schema?

Tråden skapades och har fått 11 svar. Det senaste inlägget skrevs .
1

Jag har ett tag nu jobbat med att ta fram en app som hämtar ett schema från en server.
Jag har fria händer att styra hur denna info lagras för mig på servern.

Jag har funderat fram och tillbaka men kommer inte riktigt fram till något. XML skriker mitt huvud hela tiden men jag är för dålig på hur man hämtar och processar XML i iOS, hittar heller ingen bra läsning för det som jag kan förstå.

Är det bästa att hämta en XML?
Hur ska jag lagra den på telefonen? Ska jag mata in den i en Core Data db?
Bara ha den som textfil i dokumentmappen?

Ska jag jobba med plist?

Om jag ska lagra en mindre mängd data som är tydligt strukturerad och kan representeras som en array eller ett dictionary med strängar, tal och så vidare, så gör jag en property list och lägger i antingen Library eller Documents, kanske i en undermapp om det blir fler filer i framtiden.

Core data är nog precis lika bra. En grej med Core data är att det inte går att spara ordning, utan alla relationer mellan objekt sparas som oordnade mängder. Men har du ett schema antar jag att du har tidpunkter lagrade, och då sorterar du efter dem. Core Data-dokumentationen rekommenderar att man utför sortering medan man presenterar innehållet, alltså (1) hämta data, (2) sortera och (3) visa.

Rena textfiler är jag allergisk mot, och får jag en sådan parsar jag den omedelbart och gör en Property list.

Men i ditt fall tror jag du ska satsa på XML på servern för kompatibilitet (om de inte kan göra Property list med en gång, som är en form av XML), och sedan använder du NSXMLParser på iOS för att få ut informationen, och sen sparar du antingen en Property list eller lagrar informationen i Core Data.

Tack för ditt svar Marcus!
XML kan de leverera schemat som, skulle jag vilja ha en plist, ja då får jag nog bygga exporten själv.
Jag funderar på Core Data efter jag vill att användarna ska få info utan att använda datanätet hela tiden.

Så nu ska jag bara lära mig NSXMLParser en gång för alla... jag har inte riktigt blivit kompis med den ännu.
Hittar inga bra sidor heller som förklarar den bra utan att säga att den parsern är bättre osv.

Tips emottages tacksamt!

Jag är tillbaka här... för jag funderar och funderar runt detta med schemat.
Jag löste det på ett sätt men det var praktiskt taget som att hårdkoda in schemat i appen, inte bra.
Så nu är jag på ruta 1 igen, visserligen så kan jag nu NSXMLParser, så lite skillnad är det.
Det jag funderar på nu är hur jag ska hantera schemat.
1) Ska jag söka i xml-filen?
2) Skapa objekt av alla schema poster som jag sedan söker i? (Minne)

Databaser har jag beslutat mig för att lämna där hän för denna gång.
Schemat kommer som ett xml-dokument, det plockar jag ner till appen men sedan då?

Ursprungligen av Mattias Hedman:

Schemat kommer som ett xml-dokument, det plockar jag ner till appen men sedan då?

Har du kommit fram till något?

Materialet från XML-filen kanske passar som dictionaries in en array, eller ett annat dictionary? Sen kan du iterera igenom den strukturen och spara de som matchar.

Det är ungefär så långt jag hann innan andra projekt tog överhanden. Jag har bestämt mig för NSDictionary i en Array som jag sedan itererar i. Jag ska bara...

  • Medlem
  • Nacka
  • 2011-05-26 12:20

När du talar om schema antar att du egentligen talar om en fil som lagrar data i XML format.

Ett schema är en fil (även den i XML format) som beskriver hur datastrukturen ser ut i din XML fil.

Finns en del XML parsnings ramverk ute för iPhone. Välj ett som supporterar XPath, då blir det lätt att söka ut specifik information i XML-filen.

T.ex. en data fil som ser ut så här

<data>
  <person>
    <fornamn>Kalle<fornamn>
    <efternamn>Kula</efternamn>
  </person>
</data>

Då kan du hämta ut data genom XPath: "/data/person/fornamn" eller "//fornamn".

Nej, det gör jag inte jag menar faktiskt ett schema i en formaterad xml-fil.
<program>
<title>
<starttime>
<endtime>
<image>
...
</program>
<program>
<title>
<starttime>
<endtime>
<image>
...
</program><program>
<title>
<starttime>
<endtime>
<image>
...
</program>

  • Medlem
  • Nacka
  • 2011-05-26 15:03

Jaha, haha, nu förstår jag..

Trodde du pratade om XML scheman (xml schemas / .xsd), men du menade tidsscheman.

Så kan det gå om man är otydlig.

Jag vet inte ett smack om iOS, men däremot har jag någotsånär koll på hur man kan strukturera data, och nackdelar med att uppfinna egna standarder och format, när det redan finns etablerade alternativ.

iCalendar - Wikipedia, the free encyclopedia

Hur man parsar det iOS vet jag inte, men jag skulle föreställa mig att det är något sånt här:

Loading…

  • Medlem
  • Huddinge
  • 2011-06-09 23:15

Jag skulle nästan föreslå att du försökte få ut det i JSON-format om det går (via en xslt eller dylikt), då jag tycker att det i 90% av fallen räcker, och att det är mindre footprint och enklare att parsa.

Det finns ett par bibliotek som hjälper dig på traven,:
json-framework - A strict JSON parser/generator for Objective-C - Google Project Hosting
https://github.com/TouchCode/TouchJSON

TouchJSON är väl ett av de populäraste.

Lite offtopic: Är det tv-tablå data du hade tänkte parsa?

1
Bevaka tråden