fix(core data): remove core data from the project
This commit is contained in:
		| @@ -9,78 +9,29 @@ import SwiftUI | ||||
| import CoreData | ||||
|  | ||||
| struct ContentView: View { | ||||
|     @Environment(\.managedObjectContext) private var viewContext | ||||
|      | ||||
|     @FetchRequest( | ||||
|         sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)], | ||||
|         animation: .default) | ||||
|     private var items: FetchedResults<Item> | ||||
|     // TODO: create a map | ||||
|     // Add navigation to the map | ||||
|     // Display the calculated distance and how long will it take by walking | ||||
|     // Get walkingStepLength from HealthKit | ||||
|     // Show how many steps does the route take | ||||
|     // Get walkingSpeed | ||||
|     // show how long does the route take with said walking speed | ||||
|  | ||||
|     var body: some View { | ||||
|         NavigationView { | ||||
|             List { | ||||
|                 ForEach(items) { item in | ||||
|                     NavigationLink { | ||||
|                         Text("Item at \(item.timestamp!, formatter: itemFormatter)") | ||||
|                     } label: { | ||||
|                         Text(item.timestamp!, formatter: itemFormatter) | ||||
|                     } | ||||
|                 } | ||||
|                 .onDelete(perform: deleteItems) | ||||
|                 Text("HER") | ||||
|             } | ||||
|             .toolbar { | ||||
|                 ToolbarItem(placement: .navigationBarTrailing) { | ||||
|                     EditButton() | ||||
|                 } | ||||
|                 ToolbarItem { | ||||
|                     Button(action: addItem) { | ||||
|                         Label("Add Item", systemImage: "plus") | ||||
|                     } | ||||
|                     Text("Edit") | ||||
|                 } | ||||
|             } | ||||
|             Text("Select an item") | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private func addItem() { | ||||
|         withAnimation { | ||||
|             let newItem = Item(context: viewContext) | ||||
|             newItem.timestamp = Date() | ||||
|  | ||||
|             do { | ||||
|                 try viewContext.save() | ||||
|             } catch { | ||||
|                 // Replace this implementation with code to handle the error appropriately. | ||||
|                 // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. | ||||
|                 let nsError = error as NSError | ||||
|                 fatalError("Unresolved error \(nsError), \(nsError.userInfo)") | ||||
| } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private func deleteItems(offsets: IndexSet) { | ||||
|         withAnimation { | ||||
|             offsets.map { items[$0] }.forEach(viewContext.delete) | ||||
|  | ||||
|             do { | ||||
|                 try viewContext.save() | ||||
|             } catch { | ||||
|                 // Replace this implementation with code to handle the error appropriately. | ||||
|                 // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. | ||||
|                 let nsError = error as NSError | ||||
|                 fatalError("Unresolved error \(nsError), \(nsError.userInfo)") | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| private let itemFormatter: DateFormatter = { | ||||
|     let formatter = DateFormatter() | ||||
|     formatter.dateStyle = .short | ||||
|     formatter.timeStyle = .medium | ||||
|     return formatter | ||||
| }() | ||||
|  | ||||
| #Preview { | ||||
|     ContentView().environment(\.managedObjectContext, PersistenceController.preview.container.viewContext) | ||||
|     ContentView() | ||||
| } | ||||
|   | ||||
| @@ -1,57 +0,0 @@ | ||||
| // | ||||
| //  Persistence.swift | ||||
| //  StepMap | ||||
| // | ||||
| //  Created by Oliver Hnát on 23.11.2024. | ||||
| // | ||||
|  | ||||
| import CoreData | ||||
|  | ||||
| struct PersistenceController { | ||||
|     static let shared = PersistenceController() | ||||
|  | ||||
|     @MainActor | ||||
|     static let preview: PersistenceController = { | ||||
|         let result = PersistenceController(inMemory: true) | ||||
|         let viewContext = result.container.viewContext | ||||
|         for _ in 0..<10 { | ||||
|             let newItem = Item(context: viewContext) | ||||
|             newItem.timestamp = Date() | ||||
|         } | ||||
|         do { | ||||
|             try viewContext.save() | ||||
|         } catch { | ||||
|             // Replace this implementation with code to handle the error appropriately. | ||||
|             // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. | ||||
|             let nsError = error as NSError | ||||
|             fatalError("Unresolved error \(nsError), \(nsError.userInfo)") | ||||
|         } | ||||
|         return result | ||||
|     }() | ||||
|  | ||||
|     let container: NSPersistentContainer | ||||
|  | ||||
|     init(inMemory: Bool = false) { | ||||
|         container = NSPersistentContainer(name: "StepMap") | ||||
|         if inMemory { | ||||
|             container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") | ||||
|         } | ||||
|         container.loadPersistentStores(completionHandler: { (storeDescription, error) in | ||||
|             if let error = error as NSError? { | ||||
|                 // Replace this implementation with code to handle the error appropriately. | ||||
|                 // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. | ||||
|  | ||||
|                 /* | ||||
|                  Typical reasons for an error here include: | ||||
|                  * The parent directory does not exist, cannot be created, or disallows writing. | ||||
|                  * The persistent store is not accessible, due to permissions or data protection when the device is locked. | ||||
|                  * The device is out of space. | ||||
|                  * The store could not be migrated to the current model version. | ||||
|                  Check the error message to determine what the actual problem was. | ||||
|                  */ | ||||
|                 fatalError("Unresolved error \(error), \(error.userInfo)") | ||||
|             } | ||||
|         }) | ||||
|         container.viewContext.automaticallyMergesChangesFromParent = true | ||||
|     } | ||||
| } | ||||
| @@ -1,8 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>_XCCurrentVersionName</key> | ||||
| 	<string>StepMap.xcdatamodel</string> | ||||
| </dict> | ||||
| </plist> | ||||
| @@ -1,9 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||||
| <model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithCloudKit="false" userDefinedModelVersionIdentifier=""> | ||||
|     <entity name="Item" representedClassName="Item" syncable="YES" codeGenerationType="class"> | ||||
|         <attribute name="timestamp" optional="YES" attributeType="Date" usesScalarValueType="NO"/> | ||||
|     </entity> | ||||
|     <elements> | ||||
|         <element name="Item" positionX="-63" positionY="-18" width="128" height="44"/> | ||||
|     </elements> | ||||
| </model> | ||||
| @@ -9,12 +9,10 @@ import SwiftUI | ||||
|  | ||||
| @main | ||||
| struct StepMapApp: App { | ||||
|     let persistenceController = PersistenceController.shared | ||||
|  | ||||
|     var body: some Scene { | ||||
|         WindowGroup { | ||||
|             ContentView() | ||||
|                 .environment(\.managedObjectContext, persistenceController.container.viewContext) | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user