我正在创建一个 iOS 应用程序,我打算仅向高级用户提供跨设备数据同步功能。我发现Realm Sync是一个很好的解决方案,可以保持本地设备上数据库和云 MongoDB Atlas 同步。但是,我不想将非高级用户的数据同步到云数据库。
我列出了几种我能想到的方法来防止非高级用户触发领域同步,但我不确定解决此问题的最佳方法是什么。
通过利用同步权限来防止同步- 我可以存储高级用户 ID 列表,并且只向这些用户授予同步权限。
{
"%%user.id": [
"5f4863e4d49bd2191ff1e623",
"5f48640dd49bd2191ff1e624",
"5f486417d49bd2191ff1e625"
]
}
Run Code Online (Sandbox Code Playgroud)
在客户端配置 Realm 对象,即如果用户是高级用户,则仅允许所有 Realm 对象/模型。
// Get a configuration to open the synced realm.
var configuration = user.configuration(partitionValue: "user=\(user.id)")
// For non-premium user it would be [User.self]
configuration.objectTypes = [User.self, Project.self]
Realm.asyncOpen(configuration: configuration) { [weak self](result) in /*...*/ }
Run Code Online (Sandbox Code Playgroud)
我正在寻找解决此问题的见解/推荐方法。
编辑
我还有一些关于以不同方式处理两种用例的其他问题 - 非高级用例仅打开本地Realm(),高级用例则使用Realm.asyncOpen().
Realm.asyncOpen()足够了还是需要做任何特殊处理?User为所有用户(高级+非高级)同步所有(集合中的自定义文档)记录。我的猜测是我应该为我的所有内容打开一个普通的领域,并仅使用[User.self]配置中的对象来同步领域。我正在尝试创建一个弹出菜单,类似于.menu()我们在 SwiftUI 中的修改器。我设法创建了修改器并且它工作正常。
问题:我遇到的问题是,当显示菜单时,我无法将覆盖层扩展到整个屏幕。这是我尝试覆盖它时得到的结果(以蓝色显示)
问题的原因是我有一个TabViewwhich 包裹在parent 中NavigationView。
菜单修改器:这是我创建的用于显示弹出菜单的修改器。
import SwiftUI
struct PopupMenu<MenuContent: View>: ViewModifier {
let menuContent: MenuContent
@Binding var isPresented: Bool
// Number crunching to limit menu size to 2/3rd of the screen
private let paddingRatio: CGFloat = 0.33
private let screenWidth = UIScreen.main.bounds.width
init(isPresented: Binding<Bool>, @ViewBuilder content: () -> MenuContent) {
_isPresented = isPresented
menuContent = content()
}
func body(content: Content) -> some View {
ZStack {
// …Run Code Online (Sandbox Code Playgroud) 我的想法很少.我是Visual Basic这个领域的新手,所以不要取笑我.
1.)VB.NET和之间有什么区别VB?
2.)我需要为Windows开发基本应用程序.(如记事本)我应该使用哪一个?
3.)是否有可用的IDE?
4.)如果可能,您可以建议我学习VB或VB.NET的良好资源.
注意:我知道C和Java.我无法在任何地方找到满意的答案.
Stackoverflow始终提供最精确的答案.
当我编码时,我对空检查感到沮丧.特别是在编码数据结构时!
我必须这样做
String val;
if(a != null && a.child != null)
val = a.child.getValue();
else
val = null;
Run Code Online (Sandbox Code Playgroud)
这有点......
有运营商吗?(这是C#的一部分)让Java缩短负担?
С#例子:
String val = a?.child?.getValue();
Run Code Online (Sandbox Code Playgroud) 我正在使用 SwiftUI 的拖放修改器。由于 iOS 15 提供了一个onDrag通过预览自定义修改器的选项,我正在使用它,如下所示。
问题:我有一个if #available(iOS 15.0, *)警卫可以选择不同 iOS 版本的视图。但是,不知何故,我在 iOS 14.x 上的应用程序由于EXC_BAD_ACCESS (code=1, address=0x0)错误而崩溃,因为它尝试查找新的 API,但它在 iOS 14 中不存在。
@ViewBuilder
private func getRoutineCard(routine: RoutineInfo) -> some View {
if #available(iOS 15.0, *) {
newRoutineCard(routine: routine)
} else {
oldRoutineCard(routine: routine)
}
}
@available(iOS 15.0, *)
@ViewBuilder
private func newRoutineCard(routine: RoutineInfo) -> some View {
RoutineCard(routine: routine)
// This modifier is what crashes the app on iOS 14.x
// onDrag with a …Run Code Online (Sandbox Code Playgroud) 我期待着一种方法,我可以在没有隐式/显式转换,循环,切换,内置函数,宏的情况下找到字节序.我尝试过代码,但它使用显式转换.
int is_little_endian(){
int temp = 1;
return *(char *) temp;//Returns 1 if it's a little endian machine.
}
Run Code Online (Sandbox Code Playgroud)
[编辑]
它必须在不使用任何铸件的情况下完成.我找不到一个问题,我们可以在不投射和使用宏的情况下完成它.此处的隐式转换是指编译器自动转换.从char到int说.
我有以下代码段,它分配内存之外的内存:
char *str1 = (char *) malloc(sizeof(char) * BUF_SIZE);
printf ("str1 = ");
scanf("%s", &str1);
int n = strlen(str1);
Run Code Online (Sandbox Code Playgroud)
最初,我得到一个Segmentation Fault在strlen().在玩了gdb之后我才知道那str1是在一个超出界限的地址.下面显示的是gdb输出.
(gdb) print str1
$1 = 0x636261 <Address 0x636261 out of bounds>
Run Code Online (Sandbox Code Playgroud)
注意:断点是在strlen()调用的行上设置的.另外,BUF_SIZE设置为#define BUF_SIZE 10
任何帮助将不胜感激.谢谢 :)
I have the following Long variable holding epoch value in seconds, which I'm trying to convert into a Date.
val seconds = 1341855763000
val date = Date(TimeUnit.SECONDS.toMillis(seconds))
Run Code Online (Sandbox Code Playgroud)
The output is way off than I expected. Where did I go wrong?
Actual: Wed Sep 19 05:26:40 GMT+05:30 44491
Expected: Monday July 9 11:12:43 GMT+05:30 2012
Run Code Online (Sandbox Code Playgroud)