预览

Code
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()
}
}
推荐一下刚上线的 App 熊猫小账本,里面有用到这篇博客讲的内容
熊猫小账本 一个简洁的记账 App,用于记录日常消费开支收入,使用 iCloud 保存同步数据。
- 支持备注,自定义时间偶尔忘记记账也没关系。
- 搜索历史记账,支持分类、金额、备注。
- 启动时需要面容/指纹验证,保护个人隐私。
- 支持自定义分类功能,自由添加修改分类。
- 统计图表,支出收入一目了然。
- 每天提醒记账,不会有其他推送。
- 桌面锁屏小组件开发中。。。

本文介绍了如何在SwiftUI应用中实现一个搜索功能,用于熊猫小账本App中的记账功能,支持按分类、金额和备注搜索历史记录,同时提及了数据同步、隐私保护和个性化设置等内容。
2497

被折叠的 条评论
为什么被折叠?



