【问题标题】:Storing a list of Categorize URLs - Sqlite DB, XML, or pList? Structure Design?存储分类 URL 列表 - Sqlite DB、XML 或 pList?结构设计?
【发布时间】:2010-11-04 23:27:26
【问题描述】:

大家好,我想存储 URL 的分类列表。这是一个互联网广播流媒体应用,因此我希望每个流派至少有三个链接:

  • 带有广告的免费流媒体 URL
  • 128 kbps 的优质流媒体 URL
  • 256 kbps 的优质流媒体 URL

所以每个流派都会有这三个 URL。

对于付费流,还有针对特定全球区域的“地理本地化”流 URL 或“镜像”。例如,如果我在美国,我可以选择可用镜像的最近位置,以获得更好的流媒体质量/可靠性。

尽管我经常怀疑,这些 URL 可以更改,因此我希望能够更新它们,这意味着存储不能只读。我不知道应该如何存储信息,更不用说存储在什么类型的存储中:sqlite db、XML 或属性列表。我对这一切都很陌生,所以如果其中任何一个在这种情况下是愚蠢的,我很抱歉,呵呵。

至于结构,我也不知道如何实现。对于每个位置,我可能有单独的文件/数据库,无论我最终使用什么,或者我可以有一个大的,类似于:

  • 摇滚
    • 洛杉矶
      • 免费流
      • 高级流 - 128kbps
      • 高级流 - 256kbps

但我认为数据库/文件会很快变得庞大。

我想我也可以为免费和付费流提供单独的文件/数据库,因为付费用户很可能只想收听付费流(但仍然可以选择 128kbps 或 256kbps 流,取决于他们的网络可靠性)。然后我可以在设置中选择要显示哪些流;免费或高级。这应该会减小尺寸。

稍后我想在表格视图和导航控制器中显示这些 URL。根视图将是流派列表,通过深入了解每个流派,它将显示免费或付费流。位置(例如洛杉矶)将在设置中选择,不会出现在表格视图中。

我会很感激你们的建议。我尽量做到清晰和具体,如果我遗漏了什么,请见谅。我不是要代码,只是你的想法和建议是关于如何设计这个持久数据存储,以及存储它的内容,因为我是新手。

谢谢!

【问题讨论】:

    标签: iphone objective-c cocoa-touch persistent-storage


    【解决方案1】:

    如果我理解你,你想要:

    类型列表,每个类型包含一个位置列表,每个包含一个质量列表,每个包含一组数据(包括 URL)或仅包含一个 URL。无论哪种方式,您都可以将其作为属性列表来执行,它只是通过属性列表而不是数据库来获得您想要的位置的边界。

    SQLite 在 iPhone 上,由标准 C 函数 API 访问,但 Core Data 不是。 SQLite 肯定会为您的数据库和查询提供更多结构。

    无论哪种方式,您都可以为数据库添加某种种子 ID,然后查询在线服务器以仅接收差异,这将减少通过网络传输大型数据库的需要 - 但您需要确定在决定是否值得之前,您的数据库有多大。只需压缩 XML 文件可能就足够了,因为 XML 会压缩大量数据(可能压缩到其原始大小的 30% 左右)。

    或者,您可能只真正确定了数据库中适合区域的部分。

    【讨论】:

      【解决方案2】:

      要考虑的其他一点是,为了与 OS 3.0 之前的设备兼容,Core Data (SQLite) 并不是一个真正的选择。

      除了 Core Data 的(不)可用性之外,我不确定将映射干净地存储到关系数据模型上所需的数据。我倾向于 plist 存储。考虑到您的需求,我认为这是最有意义的。

      【讨论】:

      • 谢谢你的回复,看起来合乎逻辑。
      猜你喜欢
      • 2012-02-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2021-08-09
      相关资源
      最近更新 更多