fix(core data): remove core data from the project
This commit is contained in:
		| @@ -9,78 +9,29 @@ import SwiftUI | |||||||
| import CoreData | import CoreData | ||||||
|  |  | ||||||
| struct ContentView: View { | struct ContentView: View { | ||||||
|     @Environment(\.managedObjectContext) private var viewContext |      | ||||||
|  |     // TODO: create a map | ||||||
|     @FetchRequest( |     // Add navigation to the map | ||||||
|         sortDescriptors: [NSSortDescriptor(keyPath: \Item.timestamp, ascending: true)], |     // Display the calculated distance and how long will it take by walking | ||||||
|         animation: .default) |     // Get walkingStepLength from HealthKit | ||||||
|     private var items: FetchedResults<Item> |     // 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 { |     var body: some View { | ||||||
|         NavigationView { |         NavigationView { | ||||||
|             List { |             List { | ||||||
|                 ForEach(items) { item in |                 Text("HER") | ||||||
|                     NavigationLink { |  | ||||||
|                         Text("Item at \(item.timestamp!, formatter: itemFormatter)") |  | ||||||
|                     } label: { |  | ||||||
|                         Text(item.timestamp!, formatter: itemFormatter) |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|                 .onDelete(perform: deleteItems) |  | ||||||
|             } |             } | ||||||
|             .toolbar { |             .toolbar { | ||||||
|                 ToolbarItem(placement: .navigationBarTrailing) { |                 ToolbarItem(placement: .navigationBarTrailing) { | ||||||
|                     EditButton() |                     Text("Edit") | ||||||
|                 } |  | ||||||
|                 ToolbarItem { |  | ||||||
|                     Button(action: addItem) { |  | ||||||
|                         Label("Add Item", systemImage: "plus") |  | ||||||
|                     } |  | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             Text("Select an item") |             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 { | #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 | @main | ||||||
| struct StepMapApp: App { | struct StepMapApp: App { | ||||||
|     let persistenceController = PersistenceController.shared |  | ||||||
|  |  | ||||||
|     var body: some Scene { |     var body: some Scene { | ||||||
|         WindowGroup { |         WindowGroup { | ||||||
|             ContentView() |             ContentView() | ||||||
|                 .environment(\.managedObjectContext, persistenceController.container.viewContext) |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user