如果iOS用户正在主动向视图添加数据,那么从服务器检索此数据的最佳方法是什么?

时间:2014-05-11 01:49:04

标签: ios nsurlsession nsurlsessiontask

我创建了一个列出酒店和客房的快速应用程序。我已经用Rails和postgresql创建了一个后端,并且我已经在heroku上得到了它。我使用JSON在我的iOS前端之间来回传递信息。

这是我想知道的。让我们假设您有一个带有UIBarButtonItem的TableViewController用于添加新项目。添加了新项目,视图应该更新。

你是怎么做到的?现在我的应用程序再次从服务器检索,这看起来很愚蠢。

我的列表中可能已有50个项目。如果我添加一个新项目,服务器再次被点击,现在检索51个项目。

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

同时做两件事。

  1. 发送POST请求以制作新项目。
  2. 将项目添加到UITableView
  3. 如:

    self.listings addObject:myObject];
    [self.tableView reloadData];
    

    最好的办法是假设数据已成功发送,并尽快在UITableView中显示列表。这将提供快速和流畅的体验。 95%的时间,数据将被发送到您的服务器罚款。如果发生错误的可能性很小,您可以简单地让用户知道出错了并给他们再次尝试的选项(在本地保存,如果他们在发生错误后返回添加屏幕,则预先填充数据)。 / p>

    另一个更懒惰和更糟糕的体验选项是,在他们点击“添加”之后,你会显示一个加载指示器并等待服务器响应,然后再将其添加到UITableView并刷新tableview。

    但是再次 - 您发送到服务器的数据应该与您在本地显示的数据相同*,所以只需创建对象并将其添加到数组中。

    注意:*如果服务器对此数据执行了大量工作,并且您发送的内容与您显示的内容相同,则服务器应使用201创建的进行响应创建的对象。序列化响应并将其添加到UITableView。