Post

Replies

Boosts

Views

Activity

Reply to ForEach and HStack
@ObservedObject var model = dataModel() @ObservedObject var date = dataModel1() dataModel and dataModel1 are two different classes which contain two different arrays. The two classes have to be sperate. The arrays have the same length because : Button(action: { model.writeData() date.writeData() }) { Image(systemName: "plus") } model.writeData() saves the String that is in the TextFiled and date.writeData()saves the Date.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Mar ’21
Reply to ForEach and HStack
var persistentContainer: NSPersistentContainer = { let container = NSPersistentContainer(name: "CoreDataModel") container.loadPersistentStores(completionHandler: {(StoreDescription, error) in if let error = error as NSError? { fatalError("Unresolved error \(error), \(error.userInfo)") } }) return container }() func saveContext() { let context = persistentContainer.viewContext if context.hasChanges{ do { try context.save() } catch { let nserror = error as NSError fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } } } class dataModel: ObservableObject{ @Published var data: [NSManagedObject] = [] //Contiene i dati, tutti i favorites @Published var txt = "" let context = persistentContainer.viewContext init() { readData() } func readData(){ let request = NSFetchRequestNSFetchRequestResult(entityName: "Content") do { let results = try context.fetch(request) self.data = results as! [NSManagedObject] } catch { print(error.localizedDescription) } } func writeData(){ let entity = NSEntityDescription.insertNewObject(forEntityName: "Content", into: context) entity.setValue(txt, forKey: "value") do { try context.save() self.data.append(entity) //txt = "" } catch { print(error.localizedDescription) } } func deleteData(indexSet: IndexSet){ for index in indexSet{ do { let obj = data[index] context.delete(obj) try context.save() let index = data.firstIndex(of: obj) data.remove(at: index!) } catch { print(error.localizedDescription) } } } func updateData(){ } func getValue(obj: NSManagedObject) - String{ return obj.value(forKey: "value") as! String } } class dataModel1: ObservableObject{ @Published var data: [NSManagedObject] = [] //Contiene i dati, tutti i favorites @Published var dataAttuale = Date() let context = persistentContainer.viewContext init() { readData() } func readData(){ let request = NSFetchRequestNSFetchRequestResult(entityName: "Content2") do { let results = try context.fetch(request) self.data = results as! [NSManagedObject] } catch { print(error.localizedDescription) } } func writeData(){ let entity = NSEntityDescription.insertNewObject(forEntityName: "Content2", into: context) entity.setValue(dataAttuale, forKey: "date") do { try context.save() self.data.append(entity) //txt = "" } catch { print(error.localizedDescription) } } func deleteData(indexSet: IndexSet){ for index in indexSet{ do { let obj = data[index] context.delete(obj) try context.save() let index = data.firstIndex(of: obj) data.remove(at: index!) } catch { print(error.localizedDescription) } } } func updateData(){ } func getValue(obj: NSManagedObject) - Date{ return obj.value(forKey: "date") as! Date } } The getValue function returns two different types in the two classes, thats why I need two FoeEach loops
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Mar ’21
Reply to Index Out of Range
I changed it to this, but when I press Add, the simulator freezes // // ContentView.swift // Fede // // Created by Jad Taljabini on 14/03/21. // import SwiftUI struct ContentView: View { @State private var media: String = "" @State private var voto: String = "" @State private var voti: [Float] = [] @State private var nVoti: Int = 0 @State private var test: String = "" @State private var voti2: [Float] = [] var body: some View { NavigationView { Form { Section{ TextField("A che media vuoi arrivare", text: $media) } Section{ TextField("Quanti voti prenderai", text: $test) } Section{ HStack { TextField("Tuoi voti", text: $voto) Spacer() Button(action: { voti.append(Float(voto) ?? 0) voto = "" nVoti = nVoti + 1 tutto() }, label: { Text("Add") }) } } Section{ ForEach(voti, id: \.self){ item in Text("\(item, specifier: "%.1f")") }.onDelete(perform: removeRows) } Section(header: Text("Voti che devi prendere")){ ForEach(voti2, id: \.self){ item2 in Text("\(item2)") } } } .navigationTitle("Media") } } func tutto() { let testInt = Int(test) ?? 0 let mediaFloat = Float(media) ?? 0 var mediaEffettiva = mediaEffFunzione(dim: nVoti) if mediaEffettiva mediaFloat { for i in 0..testInt - 2 { voti2[i] = Float(Int(mediaEffettiva + 1)) } let mediaEffettivaInt = Int(mediaEffettiva) let mediaFloatInt = Int(mediaFloat) var con: Int = 0 while(mediaEffettivaInt mediaFloatInt){ for j in nVoti..nVoti + testInt - 2{ voti[j] = voti2[j - nVoti]; } mediaEffettiva = mediaEffFunzione(dim: nVoti + testInt) if mediaEffettiva mediaFloat && voti2.isValidIndex(con) { voti2[con] += 0.5 } con = con + 1 if con = testInt { con = 0 } } } } func removeRows(at offsets: IndexSet) { voti.remove(atOffsets: offsets) } func mediaEffFunzione(dim: Int) - Float { var somma: Float = 0 for i in voti{ somma = somma + i } return somma / Float(dim) } } extension Array { func isValidIndex(_ index: Int) - Bool { return index = 0 && index self.count } }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Mar ’21