反斜杠(\)在SwiftUI中的作用是什么?

osh3o9ms  于 2023-02-03  发布在  Swift
关注(0)|答案(2)|浏览(211)

在SwiftUI的Apple教程"编写复杂接口”中,教程使用了一个看起来不像字符串插值或转义字符的反斜杠。

ForEach(categories.keys.sorted().identified(by: \.self))

这个反斜杠的用途是什么?
下面是包含它的整个Struct。

struct CategoryHome: View {
    var categories: [String: [Landmark]] {
        .init(
            grouping: landmarkData,
            by: { $0.category.rawValue }
        )
    }

    var body: some View {
        NavigationView {
            List {
                ForEach(categories.keys.sorted().identified(by: \.self)) { key in
                    Text(key)
                }
            }
            .navigationBarTitle(Text("Featured"))
        }
    }
}
ndasle7k

ndasle7k1#

SwiftUI中,反斜杠操作符用于引用要在给定块内使用的keypath。
来自苹果:
添加引用标识密钥路径的功能,标识密钥路径引用应用标识密钥路径的整个输入值。
例如,请看下面的代码:

ForEach(["iPhone SE", "iPhone XS Max"].identified(by: \.self)) { deviceName in
        LandmarkList()
            .previewDevice(PreviewDevice(rawValue: deviceName))
}

在这里迭代数组时,使用self(这里是- string)作为键
现在再举一个例子:在这里我们使用对象数组(而不是字符串),现在在这种情况下,用作块内用于迭代的键的键是id。

List(landmarkData.identified(by: \.id)) { landmark in
        LandmarkRow(landmark: landmark)
}
fcy6dtqo

fcy6dtqo2#

\.self这是苹果为以下应用添加的身份密钥路径:
添加引用标识密钥路径的功能,标识密钥路径引用应用标识密钥路径的整个输入值。
更多信息请参见proposal

相关问题