2009-06-22 3 views
1

Hey Leute, ich möchte eine kategorisierte Liste von URLs speichern. Dies ist ein Internet-Radio-Streaming-App, und so mag ich mindestens drei Links für jedes Genre haben:Speichern einer Liste von URLs kategorisieren - Sqlite DB, XML oder pList? Struktur Design?

  • die kostenlose Streaming-URL mit Werbespots
  • der Premium-Streaming-URL bei 128 kbps
  • dem Premium-Streaming URL bei 256 kbps

Also jedes Genre wird diese drei URLs haben.

Für die Premium-Streams gibt es auch "geo-lokalisierte" Streaming-URLs oder "Mirrors" für bestimmte globale Bereiche. Zum Beispiel, wenn ich in den Vereinigten Staaten bin, kann ich einen nächsten Ort der verfügbaren Spiegel für eine potenziell bessere Streaming-Qualität/Zuverlässigkeit wählen.

Diese URLs können, obwohl ich oft bezweifle, sich ändern, und deshalb möchte ich sie aktualisieren können, was bedeutet, dass der Speicher nicht gelesen werden kann. Ich weiß nicht genau, wie ich die Informationen speichern soll, geschweige denn in welcher Art von Speicher: sqlite db, XML oder Property-Listen. Ich bin neu in all dem, also tut es mir leid, wenn einer von denen für diese Situation dumm ist, heh.

Wie für die Struktur, ich bin mir nicht sicher, wie dies auch zu erreichen. Ich kann möglicherweise haben separate Dateien/Datenbanken, was ich am Ende mit, für jeden Standort, oder ich könnte ein großes haben, dass etwas wie:

  • Felsen
    • Los Angeles
      • Free Stream
      • Premium-Stream - 128kbps
      • Premium-Stream - 256kbps

Aber ich denke, die Datenbank/Datei würde schnell riesig werden.

Ich denke, ich kann auch separate Dateien/Datenbanken für die kostenlosen und Premium-Streams haben, Premium-Benutzer werden wahrscheinlich nur Premium-Streams hören wollen () Aber immer noch die Option der 128kbps oder 256kbps Stream abhängig auf ihre Netzwerkzuverlässigkeit). Ich könnte dann eine Option in den Einstellungen haben, welche Streams angezeigt werden sollen. kostenlos oder Premium. Dies sollte die Größe reduzieren.

Ich möchte später diese URLs in einer Tabellenansicht und Navigation Controller präsentieren. Die Grundansicht wird die Liste der Genres sein, und durch Drilldown in jedes Genre werden die kostenlosen oder Premium-Streams angezeigt. Der Standort (z. B. Los Angeles) wird in den Einstellungen ausgewählt und nicht in der Tabellenansicht angezeigt.

Ich würde die Vorschläge Ihrer Leute schätzen. Ich habe versucht, so klar und präzise wie möglich zu sein, tut mir leid, wenn ich etwas verpasst habe. Ich frage nicht nach Code, sondern nach Ihren Ideen und Vorschlägen, wie Sie diesen beständigen Datenspeicher entwerfen und was er speichern soll, da ich neu dabei bin.

Danke!

Antwort

1

Wenn ich Sie verstehen, Sie wollen:

Eine Liste von Genres, die jeweils eine Liste von Orten, an denen, die jeweils eine Liste von Eigenschaften enthält, jede enthält entweder einen Satz von Daten (einschließlich URL) oder eine URL . So oder so, Sie können dies als eine Eigenschaftsliste tun, und es wird nur die Grenze von wo Sie mit einer Eigenschaftsliste im Gegensatz zu einer Datenbank sein wollen.

SQLite ist auf dem iPhone, auf das von der Standard-C-Funktions-API zugegriffen wird, obwohl Core Data dies nicht ist. SQLite würde Ihnen sicherlich mehr Struktur für Ihre Datenbank und Ihre Abfragen geben.

In beiden Fällen können Sie eine Seed-ID für die Datenbank angeben und dann einen Online-Server abfragen, um nur Unterschiede zu erhalten. Dadurch würde die Übertragung einer großen Datenbank über das Netz reduziert Bestimmen Sie, wie groß Ihre Datenbank ist, bevor Sie entscheiden, ob sich dies lohnt. Es genügt, die XML-Datei zu komprimieren, da die XML-Datei eine große Menge komprimiert (wahrscheinlich bis zu 30% ihrer ursprünglichen Größe).

Alternativ haben Sie wahrscheinlich nur die bereichsrelevanten Bereiche Ihrer Datenbank wirklich berücksichtigt.

1

Noch etwas zu berücksichtigen ist, dass für die Kompatibilität mit Pre-OS 3.0 Geräte, Core Data (SQLite) ist nicht wirklich eine Option.

Neben der (Un) Verfügbarkeit von Core Data bin ich nicht sicher, ob die Daten, die Sie benötigen, um Karten sauber in einem relationalen Datenmodell zu speichern. Ich würde mich zum Lagerplatz neigen. Ich denke, dass es am sinnvollsten ist, wenn Sie Ihre Bedürfnisse erfüllen.

+0

Danke Ich schätze Ihre Antwort, scheint logisch. –