Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
排序字典上的ForEach:Xcode挂起带有if块的构建_Xcode_Macos_If Statement_Foreach_Swiftui - Fatal编程技术网

排序字典上的ForEach:Xcode挂起带有if块的构建

排序字典上的ForEach:Xcode挂起带有if块的构建,xcode,macos,if-statement,foreach,swiftui,Xcode,Macos,If Statement,Foreach,Swiftui,我有一本简单的字典,如下所示: 让testDict=[ “a”:“苹果”, “b”:“香蕉”, “c”:“樱桃” ] 要使用来自的答案在视图中渲染它,我使用: ForEach(testDict.sorted(by:>),id:\.key){key,中的值 文本(值) } 而且效果也很好。现在,我想根据使用if块筛选列表。但是,如果我尝试包含if块: ForEach(testDict.sorted(by:>),id:\.key){key,中的值 如果键!=“b”{ 文本(值) } } XCo

我有一本简单的字典,如下所示:

让testDict=[
“a”:“苹果”,
“b”:“香蕉”,
“c”:“樱桃”
]
要使用来自的答案在视图中渲染它,我使用:

ForEach(testDict.sorted(by:>),id:\.key){key,中的值
文本(值)
}
而且效果也很好。现在,我想根据使用
if
块筛选列表。但是,如果我尝试包含
if
块:

ForEach(testDict.sorted(by:>),id:\.key){key,中的值
如果键!=“b”{
文本(值)
}
}
XCode似乎挂起(只是需要很长时间),最终放弃了这些消息:

命令CompileSwift失败,退出代码为非零

编译器无法在合理时间内对此表达式进行类型检查;尝试将表达式拆分为不同的子表达式

在ContentView结构的最末端。这不是很有帮助,我不明白为什么XCode要花这么长时间才能放弃

如何在
ForEach
中包含
if

在现实生活中,字典来自CoreData模型,但上面的示例给出了相同的问题

我正在开发XCode 12.1,目标是MacOS 10.15

更新

此后,我在以下方面取得了成功:

ForEach(testDict.filter({$0.key!=“b”})。排序(按:>),id:\.key){key,中的值
文本(值)
}

您需要在ForEach内容中查看,所以请使用Group,如

ForEach(testDict.sorted(by: >), id: \.key) { key, value in
   Group {
     if key != "b" {
       Text(value)
     }
   }
}

我试过这个代码,它对我来说非常好。我使用的是Xcode
版本12.2 beta 3
。你给的这个简单的例子本身有用吗?@George_E我把这个样本丢到了一个操场上,它立即给了我一个错误
Type'()'不能与“View”一致;只有结构/枚举/类类型可以符合协议
。再次感谢您的帮助。这就解释了为什么
if
在某些示例中有效,而在其他示例中无效。