小编Sid*_*ria的帖子

仅对非高级用户禁用领域同步

我正在创建一个 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().

  1. 当现有用户切换到高级订阅时如何处理用例?打电话就Realm.asyncOpen()足够了还是需要做任何特殊处理?
  2. 我计划User为所有用户(高级+非高级)同步所有(集合中的自定义文档)记录。我的猜测是我应该为我的所有内容打开一个普通的领域,并仅使用[User.self]配置中的对象来同步领域。

realm mongodb ios mongodb-realm

7
推荐指数
1
解决办法
1132
查看次数

SwiftUI 添加覆盖到整个屏幕

我正在尝试创建一个弹出菜单,类似于.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)

ios swift swiftui

7
推荐指数
1
解决办法
8189
查看次数

VB.NET和VB之间的差异

我的想法很少.我是Visual Basic这个领域的新手,所以不要取笑我.

1.)VB.NET和之间有什么区别VB
2.)我需要为Windows开发基本应用程序.(如记事本)我应该使用哪一个?
3.)是否有可用的IDE?
4.)如果可能,您可以建议我学习VB或VB.NET的良好资源.

注意:我知道C和Java.我无法在任何地方找到满意的答案.
Stackoverflow始终提供最精确的答案.

vb.net visual-studio-2010 visual-studio-2012

6
推荐指数
1
解决办法
2万
查看次数

有没有 ?.Java的运算符执行空指针检查?

当我编码时,我对空检查感到沮丧.特别是在编码数据结构时!

我必须这样做

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)

java nullpointerexception null-check

5
推荐指数
2
解决办法
329
查看次数

即使使用 if #available(iOS 15.0, *),仅 iOS 15 的视图修饰符也会导致 iOS 14 上崩溃

我正在使用 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)

ios swift swiftui

5
推荐指数
1
解决办法
1668
查看次数

在没有隐式/显式转换的情况下在C中查找Endianness

我期待着一种方法,我可以在没有隐式/显式转换,循环,切换,内置函数,宏的情况下找到字节序.我尝试过代码,但它使用显式转换.

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说.

c endianness

0
推荐指数
1
解决办法
156
查看次数

Malloc分配超出绑定的内存地址

我有以下代码段,它分配内存之外的内存:

char *str1 = (char *) malloc(sizeof(char) * BUF_SIZE);
printf ("str1 = ");
scanf("%s", &str1);
int n = strlen(str1);
Run Code Online (Sandbox Code Playgroud)

最初,我得到一个Segmentation Faultstrlen().在玩了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

任何帮助将不胜感激.谢谢 :)

c string malloc scanf segmentation-fault

0
推荐指数
1
解决办法
688
查看次数

Time conversion from seconds to date issue

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)

java time date kotlin

-1
推荐指数
2
解决办法
157
查看次数