0

我从服务器导入唯一对象,同时创建离线本地对象,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. 例如,当我们离线工作时, Cerate 本地对象仅包含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的问题。

4

0 回答 0