小编Jam*_*esH的帖子

SwiftUI 中的过滤器逻辑 - Apple 教程

我正在研究 Landmarks SwiftUI 教程https://developer.apple.com/tutorials/swiftui/handling-user-input。我对逻辑运算符的使用感到困惑

landmarks.filter { landmark in
            (!showFavoritesOnly || landmark.isFavorite)
        }
Run Code Online (Sandbox Code Playgroud)

我试图理解这个逻辑如何返回过滤的地标。我很确定!运算符反转showFavoritesOnly操作数和 || 如果闭包中任一方为真,则地标.isFavorite上的运算符使语句为真,但由于某种原因,就返回的内容而言,目前我无法理解应该发生的情况。如果有人能澄清我将非常感激。

这是上下文文件:

 import SwiftUI
    
    struct LandmarkList: View {
        @State private var showFavoritesOnly = false
        
        var filteredLandmarks: [Landmark] {
            landmarks.filter { landmark in
                (!showFavoritesOnly || landmark.isFavorite)
            }
        }
        
        var body: some View {
            NavigationView {
                List(filteredLandmarks)
                    { landmark in
                    NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
                        LandmarkRow(landmark: landmark)
                    }
                }
                .navigationTitle("Landmarks")
            }
        }
    }
    
    struct LandmarkList_Previews: PreviewProvider {
        static var previews: some View {
                LandmarkList() …
Run Code Online (Sandbox Code Playgroud)

logical-operators swiftui

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

标签 统计

logical-operators ×1

swiftui ×1