RLMSyncError

Objective-C

enum RLMSyncError : NSInteger {}

Swift

typealias RLMSyncError.Code._ErrorType = RLMSyncError

与同步管理器错误处理程序可能报告的问题相关的错误,或执行异步工作的同步相关API上的回调。

  • 表示会话出现问题的错误(为同步打开的特定Realm )。

    声明

    Objective-C

    RLMSyncErrorClientSessionError = 4

    Swift

    case clientSessionError = 4
  • 指示特定用户出现问题的错误。

    声明

    Objective-C

    RLMSyncErrorClientUserError = 5

    Swift

    case clientUserError = 5
  • 该错误表示根本的同步引擎存在不可恢复的内部问题。

    声明

    Objective-C

    RLMSyncErrorClientInternalError = 6

    Swift

    case clientInternalError = 6
  • 指示Realm需要重置的错误。

    同步的 Realm 可能需要重置,因为 Atlas App Services 遇到错误,必须从备份中恢复。 如果远程 Realm 的备份副本的版本早于本地 Realm 副本,服务器将要求客户端重置 Realm。

    重置进程如下:将Realm的本地副本复制到恢复目录以妥善保管,然后从原始位置删除。 下次打开该分区值的Realm时,将自动从Atlas App Services重新下载该Realm ,并且可以正常使用。

    在 Realm 的本地副本与备份远程副本分离后,写入 Realm 的数据将存在于 Realm 文件的本地恢复副本中。 重新下载的 Realm 最初仅包含在服务器上备份 Realm 时存在的数据。

    可以通过以下两种方式之一启动客户端重置过程。

    userInfo字典包含键kRLMSyncErrorActionTokenKey下的不透明令牌对象。 可以将此令牌传递给+[RLMSyncSession immediatelyHandleError:] ,以便立即执行客户端重置进程。 这只能在应用关闭并使所有线程上有问题的Realm的每个实例失效后执行(请注意,自动释放池可能会使这一点难以保证)。

    如果未调用+[RLMSyncSession immediatelyHandleError:] ,则下次启动应用并初始化App时,将自动执行客户端重置进程。

    userInfo字典中kRLMSyncPathOfRealmBackupCopyKey键的值描述了已恢复的Realm副本的路径。 在启动客户端重置进程之前,实际上不会创建此副本。

    -[NSError rlmSync_errorActionToken], -[NSError rlmSync_clientResetBackedUpRealmPath]

    声明

    Objective-C

    RLMSyncErrorClientResetError = 7

    Swift

    case clientResetError = 7
  • 一个错误,表示用户无权对同步的Realm执行操作。 示例,如果用户尝试打开他们没有至少读取访问权限的Realm ,或写入他们只有读取访问权限的Realm ,则可能会收到此错误。

    如果用户在不使用asyncOpen() API 的情况下错误地打开了他们拥有只读权限的Realm ,也可能会出现此错误。

    默认,遇到权限被拒绝错误的Realm会被标记,以便在下次应用程序启动时删除其本地副本。

    userInfo字典包含键kRLMSyncErrorActionTokenKey下的不透明令牌对象。 可以将此令牌传递给+[RLMSyncSession immediatelyHandleError:] ,以便立即删除本地副本。 这只能在应用关闭并使所有线程上有问题的Realm的每个实例失效后执行(请注意,自动释放池可能会使这一点难以保证)。

    警告

    强烈建议,如果Realm遇到权限被拒绝错误,则在尝试重新打开它之前删除其文件。

    -[NSError rlmSync_errorActionToken]

    声明

    Objective-C

    RLMSyncErrorPermissionDeniedError = 9

    Swift

    case permissionDeniedError = 9
  • 一个错误,表示服务器拒绝了请求的 Flexible Sync 订阅。

    声明

    Objective-C

    RLMSyncErrorInvalidFlexibleSyncSubscriptions = 10

    Swift

    case invalidFlexibleSyncSubscriptions = 10
  • 错误,表示服务器已恢复此客户端进行的写入。 发生这种情况的原因可能是没有写入权限,或者是在与任何活动订阅都不匹配的 Flexible Sync Realm 中创建了对象。

    此错误仅供参考,不需要任何显式处理。

    声明

    Objective-C

    RLMSyncErrorWriteRejected = 11

    Swift

    case writeRejected = 11
  • 出现没有更具体错误代码的连接错误。

    Realm 在内部通过适当的退避处理重试连接,因此连接错误通常会被记录下来,而不是报告给错误处理程序。 例外情况是RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors设置为true ,在这种情况下,异步打开将在连接失败时被取消,并将错误报告给完成处理程序。

    请注意,连接超时报告为 (errorDomain: NSPosixErrorDomain, error: ETIMEDOUT),而不是这些错误代码之一。

    声明

    Objective-C

    RLMSyncErrorConnectionFailed = 12

    Swift

    case connectionFailed = 12
  • 由于 TLS 问题(例如证书无效),无法连接到服务器。

    声明

    Objective-C

    RLMSyncErrorTLSHandshakeFailed = 13

    Swift

    case tlsHandshakeFailed = 13
  • 服务器遇到了一个错误,它希望用户知道该错误,但该错误不一定是致命的。

    此代码错误可能表示同步未启用,或者正在尝试连接到边缘服务器应用。

    声明

    Objective-C

    RLMSyncErrorServerWarning = 14

    Swift

    case serverWarning = 14