Ios 如何在SwiftUI中的struct内的计算属性内使用for循环

Ios 如何在SwiftUI中的struct内的计算属性内使用for循环,ios,swift,swiftui,Ios,Swift,Swiftui,对于本机iOS非常陌生,我有一个结构: 结构时间:视图{ 让祈祷时间:[弦:弦] 变量名称:字符串{ 在祈祷的时候为(钥匙){ returnkey.description } }//错误:预期返回“String”的函数中缺少返回 变量时间:字符串{ 为了祈祷时间里的(u,值){ 返回值 } }//错误:预期返回“String”的函数中缺少返回 var body:一些观点{ VStack{ Text(prayerName).scaledToFill().minimumScaleFactor(0.

对于本机iOS非常陌生,我有一个结构:


结构时间:视图{
让祈祷时间:[弦:弦]
变量名称:字符串{
在祈祷的时候为(钥匙){
returnkey.description
}
}//错误:预期返回“String”的函数中缺少返回
变量时间:字符串{
为了祈祷时间里的(u,值){
返回值
}
}//错误:预期返回“String”的函数中缺少返回
var body:一些观点{
VStack{
Text(prayerName).scaledToFill().minimumScaleFactor(0.5)
文本(时间).bold().scaledToFill().minimumScaleFactor(0.5)
}
}
}
我想在单独的属性中提取字典的键和值

请注意,字典只有一个键:值对


问题是,
prairtime
可能为空,在这种情况下,
for
循环不会执行,因此不会返回任何内容

如果要从
字典中返回第一个键/值,则不应使用循环。您应该改为使用
词典的
属性
,并使用
第一个
访问它们的第一个元素

var prayerName : String {
    prayerTime.keys.first ?? ""
}

var time : String {
  prayerTime.values.first ?? ""
}
但是,如果保证
rajertime
包含单个键值对,那么只需将键和值作为单独的变量注入就更好了,不需要
字典

struct PrayerTime: View{
    let prayerName: String
    let time: String

    var body: some View {
        VStack{
            Text(prayerName).scaledToFill().minimumScaleFactor(0.5)
            Text(time).bold().scaledToFill().minimumScaleFactor(0.5)
        }
    }
}

发生此错误的原因是,如果字典为空,则这两个属性都不返回任何内容。你必须写作

var prayerName : String {
    for (key, _) in prayerTime {
      return key.description
    }
    return ""
}
但由于字典只包含一个键/值对,因此有一种更简单的方法

var body: some View {
    VStack{
      Text(prayerTime.keys.first ?? "").scaledToFill().minimumScaleFactor(0.5)
      Text(prayerTime.values.first ?? "").bold().scaledToFill().minimumScaleFactor(0.5)
    }
}
并删除这两个计算属性