Swift SwiftUI CoreData 过滤数据 2

预览


Code

swift 复制代码
import SwiftUI
import CoreData

struct HomeSearchView: View {
    @Environment(\.dismiss) var dismiss
    
    @State private var search_value = ""

    @FetchRequest(
        entity: Bill.entity(),
        sortDescriptors: [
            NSSortDescriptor(keyPath: \Bill.c_at, ascending: false)
        ],
        predicate: nil,
        animation: .default
    )
    private var bills_filter: FetchedResults<Bill>
    
    private func SearchByNameOrSurname() {
        let predicate: NSPredicate?
        if !search_value.isEmpty {
            let namePredicate = NSPredicate(format: "name CONTAINS %@", search_value)
            let moneyyPredicate = NSPredicate(format: "money CONTAINS %@", search_value)
            predicate = NSCompoundPredicate(orPredicateWithSubpredicates: [namePredicate, moneyPredicate])
        } else {
            predicate = nil
        }
        bills_filter.nsPredicate = predicate
    }
    
    
    
    var body: some View {
        NavigationStack {
            VStack {
                HStack {
                    HStack {
                        Image(systemName: "magnifyingglass")
                        TextField("分类、金额、备注", text: $search_value)
                            .onChange(of: search_value) { _ in
                                SearchByNameOrSurname()
                            }
                    }
                    
                    Button {
                        search_value = ""
                        dismiss()
                    } label: {
                        Text("取消")
                    }
                }
                
                List {
                    Section(header: Text("匹配条数 \(bills_filter.count)")) {
                        ForEach(bills_filter) { bill in
                            HStack {
                                Text(bill.emoji ?? "Unknown bill emoji")
                                Text(bill.name ?? "Unknown bill name")
                                Spacer()
                                Text("\(bill.moneyy ?? 0.0)")
                            }
                        }
                    }
                }
            }
            .navigationTitle("搜索")
            .navigationBarTitleDisplayMode(.inline)
        }
    }
}

struct HomeSearchView_Previews: PreviewProvider {
    static var previews: some View {
        HomeSearchView()
    }
}

喜欢或对你有帮助,点个赞吧,自己先点个嘿嘿。
有错误或者疑问还请评论指出。
我的个人网站 点击访问 hongweizhu.com

END

相关推荐
大熊猫侯佩4 小时前
SwiftUI 中如何花样玩转 SF Symbols 符号动画和过渡特效
swiftui·swift·apple
大熊猫侯佩5 小时前
SwiftData 共享数据库在 App 中的改变无法被 Widgets 感知的原因和解决
swiftui·swift·apple
大熊猫侯佩5 小时前
使用令牌(Token)进一步优化 SwiftData 2.0 中历史记录追踪(History Trace)的使用
数据库·swift·apple
大熊猫侯佩5 小时前
SwiftUI 在 iOS 18 中的 ForEach 点击手势逻辑发生改变的解决
swiftui·swift·apple
大熊猫侯佩1 天前
SwiftUI 如何取得 @Environment 中 @Observable 对象的绑定?
swiftui·swift·apple
大熊猫侯佩1 天前
SwiftUI 6.0(iOS 18)将 Sections 也考虑进自定义容器子视图布局(下)
swiftui·swift·apple
大熊猫侯佩1 天前
SwiftUI 6.0(iOS 18)将 Sections 也考虑进自定义容器子视图布局(上)
swiftui·swift·apple
胖虎11 天前
SwiftUI 数据绑定与视图更新(@State、@ObservedObject、@EnvironmentObject)
ios·swiftui·swift
大熊猫侯佩2 天前
SwiftUI 6.0(iOS 18)自定义容器值(Container Values)让容器布局渐入佳境(下)
swiftui·swift·apple