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

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

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

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

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

至于结构,我也不确定如何实现。我可能可以为每个位置拥有单独的文件/数据库,无论我最终使用什么,或者我可以拥有一个大的文件/数据库,如下所示:

  • 岩石
    • 洛杉矶
      • 免费串流
      • 优质流 - 128kbps
      • 优质流 - 256kbps

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

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

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

我很感激你们的建议。我试图尽可能清晰和具体,如果我遗漏了什么,抱歉。我不是在要求代码,只是询问您关于如何设计这个持久数据存储以及存储它的内容的想法和建议,因为我对此是新手。

谢谢!

有帮助吗?

解决方案

如果我理解你的话,你想要:

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

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

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

或者,您可能只需要数据库中适合区域的部分。

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top