【问题标题】:Fetching data from webservice and caching on iphone从 web 服务获取数据并在 iphone 上缓存
【发布时间】:2010-11-05 09:18:12
【问题描述】:

我想访问网络服务以获取大量数据(例如产品列表/详细信息/搜索结果)并显示这些数据。

对于此类操作是否有任何最佳做法?
在性能方面,有没有比在每个请求上检索、解析和显示文本数据以及在后台加载图像更好的方法?是否有任何明智的缓存策略可以应用?

【问题讨论】:

    标签: iphone caching


    【解决方案1】:

    如果我从头开始做这样的事情,我会这样做:

    1. 让网站以 XML 格式发布所有数据。除了可能的图片 - 只需有一个 XML 字段为每张图片指定一个 URL。因此,例如,假设我正在制作产品列表。

    2. 使用 NSXMLParser 获取和解析 XML 数据。

    3. 使用单独的 NSData dataWithContentsOfURL:调用以获取每个图像的内容,并使用来自 XML 数据的 URL

    4. 使用 CoreData 将 XML 数据(和 NSData 图像)写入数据库表。向表中添加索引时间戳字段。

    5. 您现在可以使用时间戳字段在数据库中保留最新的“x”记录 - 并且可以在需要时清除较旧的记录。

    6. 使用数据库表的内容来填充 UITableView - 或者你想要呈现的任何其他内容。

    7. 如果您需要显示的数据多于缓存的数据 - 或者您想要更新缓存中的数据。

    【讨论】:

    • 除非您有充分的理由使用 XML,否则最好使用 JSON。它使用更少的带宽,并且使用开源框架将 JSON 解析为原生 Foundation 对象很简单,从而使您无需编写一大堆 XML 解析代码。此外,出于性能原因,向 Core Data 添加大量数据(例如图像)通常不是一个好主意。将它们缓存为文件很容易,而且性能更高。
    • iOS 中已经内置了一个全面的 XML Parsing 类,它不仅可供您使用 - 而且还处理从网络获取数据 - 没有“开源框架”去获取和整合。我对你关于不在数据库中存储 blob 的论点支持 50/50 - 很多地图框架都这样做 - 但你 可以 像你建议的那样将它们存储为离散文件 - 并且只拥有数据库记录指向他们。
    • 这篇文章非常好并且提供了一些线索,但它是理论上的帖子,对于新手来说最没用。希望你能给这个问题一些实用的方法:connecting-to-server-retrieving-data-and-storing-that-on-local-database谢谢
    猜你喜欢
    • 2012-02-24
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2018-04-24
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多