我有一个视图input clk, run;
input [7:0]data_in;
output reg [7:0]avg=0;
output reg valid;
reg [10:0]data_out;
integer count=0,i;
always @*
begin
data_out=data_out+data_in;
valid=1'b0;
count=count+1;
if(count==8)
begin
valid=1'b1;
avg=data_out<<3;
count=0;
data_out=0;
end
end
endmodule
//TestBench
`timescale 1ns/10ps
module average8bytes_tb;
reg clk, run;
reg [7:0]data_in;
wire [7:0]avg;
wire valid;
reg [7:0]mem[0:79];
reg [7:0]res[0:9];
integer foutput,soutput,address,i,j,k;
initial
begin
foutput=$fopen("/home/krishna/p2_tb.txt","r");
i=0;
j=0;
k=0;
while(!$feof(foutput))
begin
if(i==8||i==17||i==26||i==35||i==44||i==53||i==62||i==71||i==80||i==89)
begin
soutput=$fscanf(foutput,"%d",res[j]);
j=j+1;
end
else
begin
soutput=$fscanf(foutput,"%d",mem[k]);
k=k+1;
end
i=i+1;
end
$fclose(foutput);
end
average8bytes test(run, clk, data_in, avg, valid);
initial
begin
$monitor("%d %d %d %d ",clk,run,data_in,avg,valid);
$dumpfile("average8bytes_test.vcd");
$dumpvars(0, test);
clk=0;
run=0;
data_in=mem[0];
for(address=1;address<80;address=address+1)
begin
#1
data_in=mem[address];
end
$finish;
end
always @*
#1 clk <= ~clk;
endmodule
When I calculate the average the valid bit should be 1 else 0 and the module should pause when run=0.
,该视图可以单独运行但会导致
在预览或模拟器中导航到前提条件失败:属性无法设置初始值
时出错。
该视图的上部(颜色)和下部(颜色)由水平按钮栏隔开,并使用GeometeryReader和BugSplitView
状态进行布局。当它是NavigationButton的目标时,它不会在Preview中正确显示,并且在模拟器中运行时会报告上述断言。删除split
即可。让我难过!帮助。
BugButtonBar
答案 0 :(得分:3)
对我来说,它是导航栏标题中的 displayMode 内联。删除它可以解决此问题。
崩溃
.navigationBarTitle("Title", displayMode: .inline)
没有崩溃
.navigationBarTitle("Title")
答案 1 :(得分:2)
由于这个错误-无法直接调试-可能是由许多不同的问题引起的,所以我想我也将案件丢在这里。
就我而言,我得到的错误是:
前提条件失败:属性无法设置初始值-128
问题是我试图在VStack上展示一个包含NavigationView的工作表,如下所示:
var body: some View {
VStack(alignment: .center) {
if /* some condition */ {
/* some other content */
} else {
NavigationView {
/* view content */
}
}
}.sheet(isPresented: /* Binding value */) {
/* sheet content */
}
}
解决方法是确保将工作表显示在NavigationView上
var body: some View {
NavigationView {
VStack(alignment: .center) {
if /* some condition */ {
/* some other content */
} else {
/* view content */
}
}
}.sheet(isPresented: /* Binding value */) {
/* sheet content */
}
}
事后看来,这很明显,但是当崩溃最初发生时,能获得更多的信息是很高兴的。
答案 2 :(得分:2)
我遇到了这个错误。就我而言,这是由于if-else语句的两个块中都有一个NavigationView造成的。
// bad
if someBool {
NavigationView {
Text("some content")
}
} else {
NavigationView {
Text("different content")
}
}
// good
NavigationView {
if someBool {
Text("some content")
} else {
Text("different content")
}
}
答案 3 :(得分:0)
问题是您的按钮被声明为计算属性。要解决崩溃,请这样声明它们:
var buttons = [BugButtonBar.Info(title: "title", imageName: "text.insert"){}]
答案 4 :(得分:0)
原来是结构信息的id属性是问题所在。如下将其更改为计算属性:
var id : String {
title + imageName
}
为什么我爱/恨SwiftUI的好例子。
答案 5 :(得分:0)
在我的情况下,它是在视图消失时为绑定属性设置一个值,该属性会像这样更改视图:
.onDisappear(perform: {
withAnimation(.easeInOut) {
self.action.collageWidthSize = 2.0 /* modifies next view border */
}
})
在下一个视图的onAppear中进行设置可以解决此问题:
.onAppear {
withAnimation(.easeInOut) {
self.action.collageWidthSize = 2.0
}
}
答案 6 :(得分:0)
好吧,我对此有点感冒。 Xcode 11.6。
我的视图可能有点混乱,但是我正在做的是,如果用户将视图置于“编辑”模式,则所有单元格都会更改其表示。我切换回去时似乎随机出现此错误。我通过删除不必要的绑定来固定它(手指仍在交叉)。我正在将布尔绑定传递到某些子视图中,以便它们知道事物处于什么状态以及如何呈现。事实是,他们不需要响应布尔值更改,因为无论如何重绘了父级,它可以重新创建子级。无需通知他们应该更改状态,只需将它们销毁并重新创建即可。
答案 7 :(得分:0)
我使用 NavigationView
作为 TabView
的根:
NavigationView {
TabView {
}
}
然后在 TabView
中我也使用了 NavigationView
,所以由于这个错误。解决方案是只使用一个 NavigationView
。