iOS-API同步
我正在iOS中构建一个玩具应用程序,用户可以:iOS-API同步,ios,swift,core-data,grand-central-dispatch,alamofire,Ios,Swift,Core Data,Grand Central Dispatch,Alamofire,我正在iOS中构建一个玩具应用程序,用户可以: 创建本地存储的任务 这些任务将同步到服务器 在网页中创建任务 它们将被同步回应用程序 所有这些都使用核心数据进行持久化,使用Alamofire进行联网,并以Swift编码 我通常对此流程执行以下操作: 上载新任务 从上游下载更改 同步本地编辑的任务 这要求所有这些任务都以串行方式执行,但Alamofire显然不执行同步请求。我对iOS编程还不熟悉,我读过一些关于GCD的书,但我不确定该如何继续 要用直截了当的问题来澄清这一点: 同步流正确吗 我
- 创建本地存储的任务
- 这些任务将同步到服务器
- 在网页中创建任务
- 它们将被同步回应用程序
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND), ^{
// This code will run in the background, so it doesn't matter
// how long it takes, it won't freeze the app...
});
dispatch_async(dispatch_get_main_queue(), ^{
// This code will run on the main thread...
});
它还有更多的功能…我同意其中的大部分,但我建议存储本地日期,并使用该日期在服务器上查找截至给定日期已更改的记录,例如,在响应客户端请求“从X开始获取记录”时,服务器将使用功能上可用的内容进行回复“从Y开始,这里是自X以来的所有新记录”,然后应用程序可以在未来的请求中使用Y。更好的是,根本不使用时间戳,而是使用服务器生成的唯一标识符(例如复制id或您拥有的其他)。这完全消除了小时差等风险。很好的模式。@Rob,进一步阅读复制id?听起来很有趣。这个想法相当简单。让服务器跟踪更新序列,通过更改/修改/删除日期、某些唯一标识符或某些序列号来识别它们。有时有时候你会有一个单独的表,其中只包含更新(有时候会在原始表上填充触发器)。但是,无论您使用什么标识符,都要让客户端跟踪它从服务器接收到的最后一个标识符,并在将来某个时候请求其他更新时将该标识符传递回服务器。