我有一个在本地使用Realm的iOS应用程序,它运行良好,我的目的是使用Realm Object Server来启用:
我最后一次遇到了很多麻烦。我的应用程序中的流程如下:
"dependencies": {
"babel-core": "^6.26.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"react": "^16.0.0",
"react-dom": "^16.0.0",
"react-router": "^4.2.0",
"react-router-dom": "^4.2.2"
},
"devDependencies": {
"babel-loader": "^7.1.2",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"css-loader": "^0.28.7",
"file-loader": "^1.1.5",
"html-webpack-plugin": "^2.30.1",
"node-sass": "^4.5.3",
"sass-loader": "^6.0.6",
"style-loader": "^0.19.0",
"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.3"
}
。如果存在User
,请转到步骤4.否则,请转到步骤2; User
到Realm对象服务器。logIn
作为identity
实体标识符。将我刚才提到的数据(姓名,收入和发薪日)保存到Realm; ROS正在使用基于cloudkit的身份验证。如果我按照上面的步骤1-4,然后重新安装该应用程序,则会出现此问题。我期望在步骤1中检索先前创建的User
,但是主键旁边的所有字段都设置为空值(名称变为空字符串,收入和发薪日变为0)。这种行为有望吗?我想在Realm的目的下做什么?
在@ AustinZ回答之后让流程更加清晰。
答案 0 :(得分:2)
"应用安装上的数据恢复"绝对是Realm Sync的有效用例。但是,您描述的流程存在问题。
同步Realm由两条信息标识:同步用户和Realm对象服务器上的Realm路径(例如/~/my/realm
)。如果您有相同的同步用户登录到多个设备,并且他们每个都在相同的路径上打开一个Realm的副本,他们将打开相同的同步Realm并保持彼此同步。
但是,要获得相同的同步用户,用户需要从其设备登录到Realm Object Server。您可以使用SyncCredentials
创建CloudKit SyncCredentials.cloudKit(token:)
值并将该凭据传递给SyncUser.logIn()
来执行此操作。然后,设备将与Realm Object Server通信,如果登录成功,则将调用logIn()
方法的回调块,并为您提供SyncUser
。这是您需要用来打开Realms的同步用户。
所以:
请查看我们的documentation了解详情。