Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
此iOS应用程序最有效的工作流是什么?_Ios_Workflow_Logic - Fatal编程技术网

此iOS应用程序最有效的工作流是什么?

此iOS应用程序最有效的工作流是什么?,ios,workflow,logic,Ios,Workflow,Logic,我有一个应用程序,需要通过互联网将Web服务同步到本地核心数据数据库。然后使用本地db fetch为tabbarcontroller中的MapView和TableView填充不同的对象。我在看以下两种情况: “A”的主要优点是,我不必用数据库预加载应用程序,尽管它的数据库很小(大约100条记录)。问题是它变得错综复杂。如果没有internet连接,则在MapView中,用户会看到地图,但“刷新”按钮被禁用。所以这不是问题。但是用户仍然可以转到tableview,他将看到一个空表 “B”的主要优

我有一个应用程序,需要通过互联网将Web服务同步到本地核心数据数据库。然后使用本地db fetch为tabbarcontroller中的MapView和TableView填充不同的对象。我在看以下两种情况:

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

“B”的主要优点是,有了预加载的db,应用程序将始终有一个数据源,可以打印和列出。我真的不知道如何预装应用程序与数据库虽然

我有点想走第一条路线“A”。我的主要问题是,因为现在我禁用了MapView上的Refresh按钮,所以它只有在从web获取数据后才能工作……SorterDarray在启动时是空的。因此,如果用户转到TableVC,它将是空的。目前,用户必须先点击刷新按钮,然后才能进入tableview


处理这个问题最有效的方法是什么?

如果100条记录是静态的,您可以随应用程序发送一组默认记录,这将是最好的解决方案。无论是否使用internet,用户都会获得一个填充的tableview

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

在WWDC 2012视频iCloud和核心数据中有一些代码向您展示了如何做到这一点(只需忽略iCloud部分)


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

边缘情况下,编写代码非常困难,但对用户体验非常重要。我认为“A”是你最好的选择(我的意见)。如果你没有初始数据+没有连接,你可以通过“你需要下载数据,获得互联网连接”来阻止整个应用的使用。当用户没有数据时,您可以在每个屏幕上编写代码来处理“无数据”场景。大多数表都包含一个“无数据”案例,它添加了一行通知用户。最好的答案取决于您的用例和需求,并且通常会受到个人偏好的影响。谢谢Dilip,我真希望有一个xcode模块来处理逻辑,根据您的代码向您展示它是什么,因为我非常直观。DBD,虽然我应该学习如何为首次启动场景等编写代码,但我确实认为用户应该具有所需的internet连接。我不太确定是否会阻止整个应用程序,但至少是“没有数据”的情况。尽管如此,这与阻止整个应用程序基本上是一样的,因为他们只能看到shell。再说一次,在用户体验方面,最好让他们看到一些东西。所以我被难住了:(我想我得走硬路线了,我在下面的答案中贴了一条评论,因为我有点进步了。但是我希望你的意见与你的评论相关。ThxOk感谢你提供了预加载的数据。这些记录基本上是存储位置。大约每个月都会添加一条新记录。所以我不能用预加载的C来发送它ore Data db?不。Core Data向sqlite数据库添加了一系列表和关系以及各种特殊的内容,只有在你真正通过Core Data在你的应用程序中执行这些内容时,才能执行这些操作。小心任何显示其他内容的博客帖子!但别担心,种子植入并没有你想象的那么糟糕。好吧,你可以,苹果可以在一些示例代码(CoreDataRecipes)中使用它,但您仍然需要编写种子代码并以与种子相同的方式创建sqlite,在设备/模拟器上,将创建的sqlite复制到捆绑包中,从您的应用程序中删除种子代码。即使如此,我也会表示怀疑。苹果公司推荐的程序是如上所述进行种子创建。我使用这种技术,尽管我不支持我们这是加载种子数据的好模式。我将数据从plist文件复制到documents文件夹。