我想Section通过使用.onDelete修饰符在SwiftUI上实现“滑动到删除”功能。问题在于它总是删除列表中的第一项。
我的视图有一个列表,其中包含用创建的动态部分ForEach。
struct SetListView : View {
var setlist: Setlist
var body : some View {
List {
ForEach(setlist.sets) {
SetSection(number: $0.id, songs: $0.songs)
}
}
.listStyle(.grouped)
}
}
Run Code Online (Sandbox Code Playgroud)
在每个部分中,都有另一个ForEach创建动态行:
private struct SetSection : View {
var number: Int
@State var songs: [Song]
var body : some View {
Section (header: Text("Set \(number)"), footer: Spacer()) {
ForEach(songs) { song in
SongRow(song: song)
}
.onDelete { index in
self.songs.remove(at: index.first!)
}
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个Optional<LocalDate>对象和一个Stream其他日期。
Stream<LocalDate> dates = ...;
Optional<LocalDate> dateOptional = ...;
Run Code Online (Sandbox Code Playgroud)
我想过滤掉可选的所有日期。如果可选项不存在,过滤器不应该做任何事情。
我写过Predicate这样的:
Predicate<LocalDate> predicate = date -> !dateOptional.isPresent() || !date.isAfter(dateOptional.get());
Stream<LocalDate> filteredStream = dates.filter(predicate);
Run Code Online (Sandbox Code Playgroud)
我想避免使用isPresent()和get()。是否有更实用的方式来编写相同的逻辑?我正在使用 Java 8。