All basic views now done.

Some tidying of views will be needed.
Next, data fetching needs to be worked on.

Signed-off-by: Louis Hollingworth <louis@hollingworth.ch>
This commit is contained in:
Louis Hollingworth 2023-05-23 18:37:04 +01:00
parent a18f485502
commit 058cf52926
Signed by: lucxjo
GPG key ID: A11415CB3DC7809B
6 changed files with 167 additions and 25 deletions

View file

@ -5,17 +5,74 @@
// Created by Louis Hollingworth on 2023-05-21.
//
import Foundation
import CoreData
class DataController: ObservableObject {
let container = NSPersistentContainer(name: "Leganto")
static let shared = DataController()
init() {
container.loadPersistentStores { desc, err in
if let err = err {
print("Core Data failed to load: \(err.localizedDescription)")
static var preview: DataController {
let result = DataController(inMemory: true)
let viewContext = result.container.viewContext
for i in 0..<3 {
for j in 1...3 {
let newFeed = Feed(context: viewContext)
switch i {
case 2:
newFeed.genre = Genre.technology.rawValue
break
case 3:
newFeed.genre = Genre.news.rawValue
break
default:
newFeed.genre = Genre.uncategorised.rawValue
break
}
newFeed.name = "\(i+j)"
newFeed.dateAdded = Date()
newFeed.dateUpdated = Date()
newFeed.desc = "\(i+j)"
newFeed.url = "https://git.ludoviko.ch/lucxjo/leganto.rss"
}
}
do {
try viewContext.save()
} catch {
let nsError = error as NSError
fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
}
return result
}
let container: NSPersistentCloudKitContainer
init(inMemory: Bool = false) {
container = NSPersistentCloudKitContainer(name: "Leganto")
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
}
}