小编Ste*_*n.W的帖子

SwiftUI - 无法在工作表上显示警报

故事有点长。首先,让我展示一些无法按我预期工作的代码。

import SwiftUI

struct ContentView: View {
    @State var isPresentingAlert = false
    @State var isPresentingSheet = false
    
    var body: some View {
        VStack {
            Button("Show Sheet") {
                isPresentingSheet = true
            }
        }
        .alert("Alert", isPresented: $isPresentingAlert) {}
        .sheet(isPresented: $isPresentingSheet) {
            Button("Show Alert") {
                isPresentingAlert = true
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码的意图很明确:当用户按下“显示工作表”按钮时,视图应该显示一个工作表,并且工作表上有一个“显示警报”按钮,这应该会导致点击后显示警报窗口。代码被简化 - 在原始应用程序中,工作表向用户显示一个表单,并且当用户提交包含一些无效数据的表单时应显示警报。

但实际上,当我按下“显示警报”按钮时,警报并未显示。相反,我在控制台中收到以下错误:

2023-02-14 23:41:08.163349+0800 SheetAndAlert[8351:217492] [Presentation] Attempt to
present <SwiftUI.PlatformAlertController: 0x15b030600> on
<_TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier__:
0x15b00aa00> (from
<_TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_7AnyViewVS_12RootModifier__:
0x15b00aa00>) which is already presenting
<_TtGC7SwiftUI29PresentationHostingControllerVS_7AnyView_: 0x15b02e000>.
Run Code Online (Sandbox Code Playgroud)

我不知道这个错误意味着什么。后来我更改了代码以使用 UIKIt's UIAlertController,希望我可以解决该错误。(代码改编自这个答案:How do …

ios swift swiftui

10
推荐指数
2
解决办法
2347
查看次数

为什么32位程序的结果与64位程序的结果不同?

我正在进行整数字节级表示的赋值.我写了一个小程序:

e1.c

int main(void) {
    printf("%d\n", -2147483648 < 2147483647);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我使用C89标准编译32位版本的可执行文件时,使用该命令gcc e1.c -m64 -std=c89 -g -O0 -o e1,它按预期工作:它打印0指示C编译器将值2147483648视为unsigned int,因此它将表达式的其余部分转换为unsigned int.但奇怪的是,这种关系并不适用于打印的64位版本1.

有谁能解释一下?

c

8
推荐指数
1
解决办法
129
查看次数

"时间旅行调试器"的原理是什么?

嗯......我的老师,我的一些同学和我将构建一个Debugger项目.我们希望我们的调试器是交互式的,也就是说,当输入代码时,结果将在几秒钟后的某个地方显示,并且结果会在输入代码更改时发生变化.另一方面,在运行时,我们可以回滚到前一行或断点.

按照我老师的说法,编程时会涉及"时间旅行调试"技术.我搜索了一些由其他人维护的项目,但我很难理解代码,并且在任何这些README文件中都没有介绍这种技术.

参考:https: //github.com/mattgodbolt/compiler-explorer

javascript c c++ compiler-construction time-travel

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

C - 我应该在函数中返回结果还是将其保存在参数指针指向的变量中?

我很困惑哪种风格更适合在C中编写函数:

int function() 
{ 
     /*code block*/ 
    return result;
}
Run Code Online (Sandbox Code Playgroud)

要么

void function(int *result) 
{
    /*code block*/ 
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我第一个想到的是清晰的(和喜欢Java风格),但是当我看到一些C函数声明为第二风格,喜欢gets(),shmget()和我的算法课程的老师建议我写第二样式声明,就像create_Queue(Queue *q),我想知道第二个是否是C风格,我应该遵循.

c

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

Haskell - 将整数列表映射到它们的平方根

我创建了一个小函数,将整数列表映射到它们的平方根。代码本身很简单:

f x = map sqrt [1..x]
Run Code Online (Sandbox Code Playgroud)

使用默认类型推断,它可以成功加载,但该函数可以接受Floating类型类值,而我只是希望它接受Integers。所以我在它上面添加了一个类型注释。

f :: (Integral a, Floating b) => a -> [b]
f x = map sqrt [1..x]
Run Code Online (Sandbox Code Playgroud)

出乎我的意料,加载失败。在 GHCi 的 REPL 中抛出错误:

1.hs:48:7: error:
    • Couldn't match type ‘a’ with ‘b’
      ‘a’ is a rigid type variable bound by
        the type signature for:
          f :: forall a b. (Integral a, Floating b) => a -> [b]
        at 1.hs:47:1-41
      ‘b’ is a rigid type variable bound by
        the type signature …
Run Code Online (Sandbox Code Playgroud)

haskell

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