OneWaySynchronizer 1.1.1

OneWaySynchronizer 1.1.1

Siarhei Ladzeika 维护。



  • Siarhei Ladzeika

Build Status

目的

最简单的本地数据与远程数据同步的抽象。用于 iOS,用 Swift 编写。

概述

许多应用程序将远程服务器作为某些将后渲染给用户的某些数据源。同步过程用于从远程服务器获取数据并将其存储在本地。此操作包括一些标准阶段:获取、比较、差异、下载新数据等... 此模块通过在内部实现所有逻辑并通过与外部“所谓的”处理器的协议交互来简化同步过程。您需要做的就是实现所有所需异步方法。所有项目都应该具有唯一性并且必须有字符串唯一键。同步器不定义条目的顺序,这是程序员的职责。示例,根据服务器的响应填充顺序,然后根据此顺序对条目进行排序。

安装

Cocoapods

pod "OneWaySynchronizer"

手动

拷贝仓库并将来自 Source 文件夹的文件添加到项目中。

使用方法

请参阅 示例 文件夹以获取详细示例。

OneWaySynchronizer

同步流程

   sync()
      ↓
   post OneWaySynchronizerDidChangeSyncStatusNotification
      ↓
   [called at the beginning of synchronization process]
   owsSyncBegin
      ↓
   [return list of items from remote source, for example, from server]
   owsFetchSourceList
      ↓       ↓
  ┌─< err     ok
  │           ↓
  │ [return unique keys of locally existing items]
  │  owsGetLocalKeys 
  │   ↓       ↓
  ├─< err     ok
  │           ↓
  │ [remove local items, because their keys were not found in source list]
  │  owsRemoveLocalItems 
  │   ↓       ↓
  ├─< err     ok
  │           ↓
  │ [define if synchronizer should update already existing item]
  │  owsShouldUpdateItem 
  │   ↓       ↓
  ├─< err     ok
  │           ↓
  │ [here you can reorder, filter items for next download operations]
  │  owsPrepareDownload 
  │   ↓       ↓ 
  ├─< err     ok
  │           ↓
  │ [download preview of item if necessary]
  │  owsDownloadItemPreview <───────────────────────────┐
  │   ↓       ↓                                         │
  ├─< err     ok >── concurrent loop for all previews ──┘
  │           ↓
  │ [download main content of item if necessary]
  │  owsDownloadItem <─────────────────────────────────┐
  │   ↓       ↓                                        │
  ├─< err     ok >── concurrent loop for all previews ─┘
  │           ↓
  │  [called after synchronization process]
  └> owsSyncEnd 
      ↓
   sync completions
      ↓ 
   post OneWaySynchronizerDidChangeSyncStatusNotification

方法

  • func sync(completion: @escaping OwsSyncCompletion = { _ in })

开始同步过程。如果有其他进程正在运行,则在该进程完成后将启动新的同步,在最后同步结束时将调用两个完成回调。

  • func cancel()

取消正在运行的同步。如果没有任何同步正在运行,则不执行任何操作。

选项

  • concurrency - 下载时并发任务的数量。0 - 表示自动。默认值是 0。
  • downloadPreview - 如果为 true,则同步器应调用预下载方法。默认为 false。
  • downloadContent - 如果为 true,则同步器应调用内容下载方法。默认为 true。
  • stopOnError - 如果为 true,则同步在进行第一次错误后尽快停止。默认为 true。

更改

参见 变更日志

许可

MIT。参见 LICENSE

作者

Siarhei Ladzeika [email protected]