【发布时间】:2013-03-08 15:00:12
【问题描述】:
我有一个需要互联网才能将网络服务同步到本地核心数据数据库的应用程序。然后使用本地数据库获取来填充标签栏控制器中 MapView 和 TableView 的不同对象。我正在研究这两种情况:
“A”的主要优点是我不必用数据库预加载应用程序,尽管它的数据库很小(大约 100 条记录)。问题是它变得令人费解。如果没有互联网连接,在 MapView 中,用户会看到地图,但刷新按钮被禁用。所以这不是问题。但是用户仍然可以转到 tableview,他会看到一个空表。
“B”的主要优点是,使用预加载的数据库,应用程序将始终有一个数据源可供绘制和列出。不过,我真的不知道如何使用 db 预加载应用程序。
我有点想走第一条路线“A”。我的主要问题是,因为现在我禁用了 MapView 上的 refreshButton,因此它仅在从网络获取数据后才起作用...... sortedArray 在启动时为空。因此,如果用户访问 TableVC,它将是空的。就目前而言,用户必须先点击刷新按钮,然后才能进入 tableview。
解决这个问题最有效的方法是什么?
【问题讨论】:
-
边缘案例,编写代码非常痛苦,但它们对用户体验非常重要。我认为“A”是你最好的选择(我的观点)。如果您没有初始数据 + 没有连接,您可以通过“您需要下载数据,获得互联网连接”来阻止整个应用程序的使用。您可以编写代码来处理用户在没有数据时可以访问的每个屏幕上的“无数据”场景。大多数表都包含一个“无数据”案例,它添加了一个通知用户的行。最佳答案取决于您的用例和要求,并且通常会因个人喜好而有所偏差。
-
感谢 Dilip,我真的希望有一个 xcode 模块来处理逻辑,根据您的代码向您展示它是什么,因为我非常直观。 DBD,虽然我应该学习如何为首次启动场景等编写代码,但我确实认为用户应该需要互联网连接。我不太确定是否要阻止整个应用程序,但至少是“没有数据”的情况。虽然,这与阻止整个应用程序本质上是一样的,因为他们除了 shell 什么都看不到。再说一次,在用户体验方面,最好让他们看到一些东西。所以我很难过:(我想我需要走艰难的路
-
好的,我在下面的答案中发表了评论,因为我进步了一些。但我喜欢你的意见,因为它仍然与你的评论有关。谢谢