Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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 “获取REST数据的模式”;懒散地;_Ios_Objective C_Design Patterns - Fatal编程技术网

Ios “获取REST数据的模式”;懒散地;

Ios “获取REST数据的模式”;懒散地;,ios,objective-c,design-patterns,Ios,Objective C,Design Patterns,我正在制作一个内容无限的UIScrollView,例如一个包含事件的日历。我正在使用REST调用从后端获取事件 我想知道是否有人有一个模式/代码块,其中: 何时获取更多数据 及 还要多少钱 可轻松调节 例如,我想在30天内尝试获取事件(向前15天,向后15天),当用户向前滚动10天(距离限制5天)时,我想再向前获取30天,这意味着我现在有60天 感谢使用滚动视图(无论是直接使用UIScrollView,还是使用UITableView,都可以帮助您进行内存管理-卸载不可见内容)您可以使用scr

我正在制作一个内容无限的UIScrollView,例如一个包含事件的日历。我正在使用REST调用从后端获取事件

我想知道是否有人有一个模式/代码块,其中:

  • 何时获取更多数据 及

  • 还要多少钱

可轻松调节

例如,我想在30天内尝试获取事件(向前15天,向后15天),当用户向前滚动10天(距离限制5天)时,我想再向前获取30天,这意味着我现在有60天


感谢使用滚动视图(无论是直接使用
UIScrollView
,还是使用
UITableView
,都可以帮助您进行内存管理-卸载不可见内容)您可以使用
scrollViewDidScroll:
delegate方法和
contentOffset
属性来检查用户正在/已经滚动到哪里,以及是否正在接近您当前拥有的数据的末尾。您使用的算法取决于滚动视图中每个项目/天的高度。结合
contentOffset
可以知道用户滚动到哪一天。

我自己做了一个简单的方法

我的模型中有一个void方法,它使用日期、numberOfDaysToFetch和限制。 提取的天数可以是90,限制可以是30

当scrollview在视图中滚动时(每个视图代表一天),我为每个可见的日子调用该方法

如果当天的数据在本地不存在,或者当天的数据接近本地不存在的数据限制(30),则该方法将调用服务(异步)获取数据,例如从最新的日期和numberOfDaysToFetch forward获取数据

这意味着该方法将首先获得6个月的数据。3向前,3向后。向前滚动2个月时,将再提取3个月的数据

每当从服务接收到响应时,接收到的数据都存储在本地,并抛出一个通知,并且将调用一个方法来更新scrollview中的视图


现在,我可以调整limit和NumberOfDays,使其最适合Web服务的性能。

我要求提供一种模式或方法,以巧妙的方式实际获取数据。我知道如何使用UIScrollView。