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