【发布时间】:2023-03-07 21:32:01
【问题描述】:
打开应用时,我尝试使用此功能将云数据同步到应用
struct AppRootView: View {
@State var homeLink = false // <- add here
@State var loginLink = false
@State private var selection: String? = nil
var body: some View {
NavigationView { // <- wrap in the `NavigationView`
VStack(alignment: .leading) {
Text("App")
.bold()
.font(.largeTitle)
NavigationLink(destination: homeMainView(), tag: "home", selection: $selection) {EmptyView()}
NavigationLink(destination: LoginView(), tag: "login", selection: $selection) {EmptyView()}
}
}
.onAppear(perform: handleSignIn)
.frame(minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity).background(Color.yellow)
}
func handleSignIn() {
print("HANDLING SIGNING IN")
if let _ = app.currentUser() {
print("USER IS LOGGED IN ALREADY")
self.handleRealmSync()
self.selection = "home" // <- activate the `NavigationLink`
} else {
print("USER NEEDS TO LOGIN")
self.selection = "login"
print("not logged in; present sign in/signup view")
}
}
func handleRealmSync(){
let user = app.currentUser()
let partitionValue = "store=walmart"
Realm.asyncOpen(configuration: user!.configuration(partitionValue: partitionValue),
callback: { (maybeRealm, error) in
guard error == nil else {
fatalError("Failed to open realm: \(error!)")
}
guard let realm = maybeRealm else {
fatalError("realm is nil!")
}
// realm opened
print("Realm SYNC IS OPENED")
})
}
}
我得到了“Realm SYNC IS OPENED”的打印结果,但是当我使用此代码查询时,我开始注意到这一点
itemrealm = try! Realm(configuration: user.configuration(partitionValue: partitioningValue)
storeitems = self.itemrealm.objects(Item.self)
查询没有得到我在云集群中的所有内容。
我猜在我将更多数据导入云之前,同步运行良好。我目前在我的集群中有至少 10,000 个数据,这些数据被赋予了被调用的分区值,然后我对 storeitems 进行了 .count 并注意到它只提取了大约 4,000 个项目(这是我导入新数据之前的数量)。所以云没有同步当前数据。
然后我检查了我的仪表板日志并看到了这个
点击权限错误显示此消息
错误类型:同步 -> SyncSession 结束 错误: 以错误结束会话:用户对架构指令的分区没有写入权限 (ProtocolErrorCode=206)
我的同步权限是
Read : true
Write : {
"%%partition": "%%user.id"
}
用户可以读取所有数据,但只能写入自己的数据
如何修复权限错误并将我的最新集群同步到移动客户端?
当我将写权限切换到
"%%user.id": "%%partition"
这是我遇到的错误
致命错误:无法打开领域:错误 Domain=io.realm.unknown Code=208 "Bad client file identifier (IDENT)" UserInfo={Category=realm::sync::ProtocolError, NSLocalizedDescription=Bad client file identifier (IDENT),错误代码=208}:
【问题讨论】: