If your deleted files are still being complained about “Build input files cannot be found”:
Continue readingMonthly Archives: July 2024
Difference between Task and async let
Task is for “fire-and-forget” use cases, which means you don’t need to handle the result when it’s done processing:
Task {
await fetchData(for: user)
}
Async let is for parallel processing where you do have to process the results:
async let a = callA()
async let b = callB()
let results = await a + b
How to auto generate id with GRDB.swift
And how to only create a table if it doesn’t already exist: as with sqlite, use ifNotExists
:
db.create(table: "todo", ifNotExists: true) { t in
t.autoIncrementedPrimaryKey("id")
t.column("name", .text).notNull()
}
Singleton pattern in Swift for DbManager
With the example of GRDB, a lightweight sqlite wrapper:
class DbManager {
static let sharedInstance = DbManager()
var dbPath: String! <--- !!!
var dbQueue: DatabaseQueue!
private init() {
do {
dbQueue = try connectToDatabase()
try createTable()
} catch {
print(error)
}
}
}
Continue reading How to install and uninstall packages in Xcode
Right here: add through pasting a github URL. All done.
I love it when there’s an official way of managing packages. The evolution of even package management systems are just too much.
And how to uninstall: from the +/- button here. Not as friendly. Why couldn’t they have added a “remove package” option on the leftnav?
Xcode cannot Preview “the preview preflight must belong to at least one target in the current scheme in order to use previews”
This happens after moving the swift files around.
Solution: simply quit Xcode and reload so that it can re-source the new location of the files.
Or command + B to rebuild. Sometimes those formatting errors are just not caught up and not rebuilt yet.