6

我有一个需要互联网才能将网络服务同步到本地核心数据数据库的应用程序。然后使用本地数据库获取来填充标签栏控制器中 MapView 和 TableView 的不同对象。我在看这两种情况:

应用流逻辑

“A”的主要优点是我不必用数据库预加载应用程序,尽管它的数据库很小(大约 100 条记录)。问题是它变得令人费解。如果没有互联网连接,在 MapView 中,用户会看到地图,但刷新按钮被禁用。所以这不是问题。但是用户仍然可以转到 tableview,他会看到一个空表。

“B”的主要优点是使用预加载的数据库,应用程序将始终有一个数据源准备好进行绘图和列出。我真的不知道如何用数据库预加载应用程序。

我有点想走第一条路线,“A”。我的主要问题是,因为现在我禁用了 MapView 上的 refreshButton,因此它仅在从网络获取数据后才起作用...... sortedArray 在启动时为空。因此,如果用户访问 TableVC,它将是空的。就目前而言,用户必须先点击刷新按钮,然后才能进入 tableview。

处理这种情况最有效的方法是什么?

4

1 回答 1

2

如果这 100 条记录足够静态,您可以使用应用程序发送一组默认记录,那将是最佳解决方案。用户,无论有没有互联网,都会得到一个填充的表格视图。

将您的记录作为 plist 发送到您的应用程序包中。首次启动时,打开 plist 并将每个条目作为新对象添加到核心数据中。这种类型的“播种”发生得非常快。只需为 plist 创建一个集合(数组、字典),然后枚举,将其映射到 managedObject 的属性。

在 WWDC 2012 视频 iCloud 和 Core Data 中有代码向您展示了如何执行此操作(只需忽略 iCloud 部分)。

然后,如果在播种后有连接,您可以同步数据,这将更新/替换/等预填充的数据。

于 2013-03-08T15:17:26.827 回答