CoreStore离线模式同步功能

时间:2019-05-02 20:37:15

标签: ios swift core-data synchronization corestore

我从服务器导入唯一对象,同时使用iOSLocalId创建离线本地对象,这是我的离线本地ID。

我将此功能用于唯一导入:

public class func uniqueID(from source: ImportSource, in transaction: BaseDataTransaction) throws -> UniqueIDType? {
        return source["id"] as? UniqueIDType
    }

我的问题是我可以指定

之类的唯一ID吗?
public class func uniqueID(from source: ImportSource, in transaction: BaseDataTransaction) throws -> UniqueIDType? {
        return source["iOSLocalId"] as? UniqueIDType
    }

我需要这个来绑定两个对象。本地(已离线创建),并且从服务器收到了相同的信息。

所以工作流程是下一个:

  1. 示例本地对象仅包含iOSLocalId,但不包含服务器ID,例如我们离线工作时
  2. 当连接似乎在线时,将本地对象推送到服务器。
  3. 当API返回在服务器上同步的本地对象和服务器对象上创建的对象时。

在这种情况下,我需要以某种方式告诉CoreStore我有两个唯一ID,一个是本地的,哪台服务器也传回给我,一个是同一对象的服务器ID。

但是也许还有另一种方法。

确保我可以编写自己的服务,该服务将搜索已经存在的本地对象并对其进行更新。

也许我可以使用其中一些功能:

public static func shouldInsert(from source: ImportSource, in transaction: BaseDataTransaction) -> Bool {
        return shouldUpdate(from: source, in: transaction)
    }

    public static func shouldUpdate(from source: ImportSource, in transaction: BaseDataTransaction) -> Bool {
        return true
    }

但是正如我说的那样,每次找到服务器ID时我都需要更新,但是在脱机同步的情况下,我也有本地ID,然后就存在确定唯一ID的问题。

0 个答案:

没有答案