Проблема
Привет, я пытаюсь создать функцию, которая перемещает элементы между различными подсписками сущности базовых данных путем изменения значения «categoryNumber». В настоящий момент я не уверен, как ссылаться на указанный элемент списка c в вызове параметра функции (Что должно go вместо x - self.thingOne (тестер: x ), который ссылается на указанный c элемент из ContentView List , который пользователь хочет переместить - x - это сущность, которую должна изменить функция).
Заранее спасибо.
Модальное представление
import SwiftUI
struct ModalSheet: View {
@Environment(\.managedObjectContext) var context
var body: some View {
VStack(spacing: 12){
Button(action:{
self.thingOne(tester: x)
}){
HStack{
Image(systemName: "circle")
Text("Vital")
}
}
Button(action:{
self.thingTwo()
}){
HStack{
Image(systemName: "circle")
Text("Urgent")
}
}
}.padding()
.background(Color.white)
.cornerRadius(5)
}
func thingOne(tester:Tester){
tester.setValue(1, forKey: "categoryNumber")
do{
try context.save()
}
catch{
print("errror")
}
}
func thingTwo(){
}
}
struct ModalSheet_Previews: PreviewProvider {
static var previews: some View {
ModalSheet()
}
}
Просмотр содержимого
struct ContentView: View {
@Environment(\.managedObjectContext) var context
@FetchRequest(entity: Tester.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Tester.index, ascending: true)], predicate: NSPredicate(format: "categoryNumber == 1")) var tester1: FetchedResults<Tester>
@FetchRequest(entity: Tester.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Tester.index, ascending: true)], predicate: NSPredicate(format: "categoryNumber == 2")) var tester2: FetchedResults<Tester>
@State var show = false
var body: some View {
ZStack{
NavigationView{
List{
Section(header: Text("Vital")){
ForEach(tester1, id: \.self){ item in
Text("\(item.name ?? "")")
}.onLongPressGesture {
withAnimation{
self.show.toggle()
}
}
}
Section(header: Text("Urgent")){
ForEach(tester2, id: \.self){ item in
Text("\(item.name ?? "")")
}
}
}
.navigationBarTitle("Home", displayMode: .inline)
.navigationBarItems(trailing:
Button(action: {
let tog = Tester(context: self.context)
tog.name = "Test 1"
tog.categoryNumber = 1
do{
try self.context.save()
} catch {
print("There is this error: \(error)")
}
}) {
Image(systemName: "plus")
}
}
if self.show{
GeometryReader{_ in
ModalSheet()
}
.background(
Color.black.opacity(0.15)
.edgesIgnoringSafeArea(.all)
.onLongPressGesture{
withAnimation{
self.show.toggle()
}
}
)
}
}
}
}
Основные данные Класс
import CoreData
extension Toggle {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Toggle> {
return NSFetchRequest<Toggle>(entityName: "Toggle")
}
@NSManaged public var categoryNumber: Int16
@NSManaged public var index: Int64
@NSManaged public var isComplete: Bool
@NSManaged public var name: String?
}