我有一个应用程序需要互联网才能将网络服务同步到本地核心数据数据库。然后使用本地数据库提取为 tabbarcontroller 中的 MapView 和 TableView 填充不同的对象。我在看这两种情况:
“A”的主要优点是我不必使用数据库预加载应用程序,尽管它是一个小数据库(大约 100 条记录)。问题是它变得令人费解。如果没有 Internet 连接,在 MapView 中,用户会看到 map ,但 refreshButton 被禁用。所以这不是问题。但是用户仍然可以转到 TableView ,他会看到一个空表。
“B”的主要优点是通过预加载的数据库,应用程序将始终有一个数据源可供绘图和列出。不过,我真的不知道如何使用数据库预加载应用程序。
我有点想走第一条路线,“A”。我的主要问题是,因为现在我禁用了 MapView 上的 refreshButton,所以它只有在从网络获取数据后才有效……sortedArray 在启动时是空的。因此,如果用户转到 TableVC,它将是空的。就目前而言,用户必须先点击刷新按钮才能转到表格 View 。
处理这个问题最有效的方法是什么?
最佳答案
如果这 100 条记录足够静态,您可以随应用提供一组默认记录,那将是最佳解决方案。用户,无论有没有互联网,都会得到一个填充的表格 View 。
将您的记录作为应用程序包中的 plist 发送。首次启动时,打开 plist 并将每个条目作为新对象添加到核心数据中。这种类型的“播种”发生得非常快。只需为 plist 创建一个集合(数组、字典),然后枚举,将其映射到您的 managedObject 的属性。
在 WWDC 2012 视频 iCloud 和核心数据中有代码向您展示了如何执行此操作(忽略 iCloud 部分)。
然后,如果在播种后有连接,您可以同步数据,这将更新/替换/等预先填充的数据。
关于ios - 这个 iOS 应用程序最有效的工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296915/