복붙노트

[SWIFT] 어떻게 적절하게 그룹 A는 목록 날짜별로 코어 데이터에서 가져?

SWIFT

어떻게 적절하게 그룹 A는 목록 날짜별로 코어 데이터에서 가져?

해결법


  1. 1.당신은 당신의 상황에서 작동합니다, 다음을 시도 할 수 있습니다.

    당신은 당신의 상황에서 작동합니다, 다음을 시도 할 수 있습니다.

      @Environment(\.managedObjectContext) var moc
      @State private var date = Date()
      @FetchRequest(
        entity: Todo.entity(),
        sortDescriptors: [
          NSSortDescriptor(keyPath: \Todo.date, ascending: true)
        ]
      ) var todos: FetchedResults<Todo>
    
      var dateFormatter: DateFormatter {
        let formatter = DateFormatter()
        formatter.dateStyle = .short
        return formatter
      }
    
        func update(_ result : FetchedResults<Todo>)-> [[Todo]]{
          return  Dictionary(grouping: result){ (element : Todo)  in
                dateFormatter.string(from: element.date!)
          }.values.map{$0}
        }
    
    
      var body: some View {
        VStack {
          List {
            ForEach(update(todos), id: \.self) { (section: [Todo]) in
                Section(header: Text( self.dateFormatter.string(from: section[0].date!))) {
                    ForEach(section, id: \.self) { todo in
                HStack {
                Text(todo.title ?? "")
                Text("\(todo.date ?? Date(), formatter: self.dateFormatter)")
                }
                }
              }
            }.id(todos.count)
          }
          Form {
            DatePicker(selection: $date, in: ...Date(), displayedComponents: .date) {
              Text("Datum")
            }
          }
          Button(action: {
            let newTodo = Todo(context: self.moc)
            newTodo.title = String(Int.random(in: 0 ..< 100))
            newTodo.date = self.date
            newTodo.id = UUID()
            try? self.moc.save()
          }, label: {
            Text("Add new todo")
          })
        }
      }
    
  2. from https://stackoverflow.com/questions/59180698/how-to-properly-group-a-list-fetched-from-coredata-by-date by cc-by-sa and MIT license