小编Joo*_*ila的帖子

IndexSet引用节的索引而不是行的索引

我想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)

foreach list swift swiftui

7
推荐指数
2
解决办法
683
查看次数

仅当存在可选项时如何应用条件?

我有一个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。

java predicate optional java-8 java-stream

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

标签 统计

foreach ×1

java ×1

java-8 ×1

java-stream ×1

list ×1

optional ×1

predicate ×1

swift ×1

swiftui ×1