commit c9228cad41e191d8d4e247c1d62a5e71279f8b6b
parent e82df68743c94eb5bd70cf004b9d1f900233e89c
Author: Michael Camilleri <[email protected]>
Date: Thu, 19 Feb 2026 05:25:37 +0900
Use type-checked keys
Co-Authored-By: Codex GPT 5.3 <[email protected]>
Diffstat:
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/Listless/Models/TaskItem.swift b/Listless/Models/TaskItem.swift
@@ -3,6 +3,19 @@ import Foundation
@objc(TaskItem)
public class TaskItem: NSManagedObject, Identifiable {
+ private enum Keys {
+ private static func key<Value>(_ keyPath: KeyPath<TaskItem, Value>) -> String {
+ NSExpression(forKeyPath: keyPath).keyPath
+ }
+
+ static let id = key(\TaskItem.id as KeyPath<TaskItem, UUID>)
+ static let title = key(\TaskItem.title)
+ static let isCompleted = key(\TaskItem.isCompleted)
+ static let createdAt = key(\TaskItem.createdAt)
+ static let updatedAt = key(\TaskItem.updatedAt)
+ static let sortOrder = key(\TaskItem.sortOrder)
+ }
+
@NSManaged public var id: UUID
@NSManaged public var title: String
@NSManaged public var isCompleted: Bool
@@ -16,18 +29,18 @@ public class TaskItem: NSManagedObject, Identifiable {
public override func awakeFromInsert() {
super.awakeFromInsert()
- setPrimitiveValue(UUID(), forKey: "id")
- setPrimitiveValue(Date(), forKey: "createdAt")
- setPrimitiveValue(Date(), forKey: "updatedAt")
- setPrimitiveValue(false, forKey: "isCompleted")
- setPrimitiveValue("", forKey: "title")
- setPrimitiveValue(0, forKey: "sortOrder")
+ setPrimitiveValue(UUID(), forKey: Keys.id)
+ setPrimitiveValue(Date(), forKey: Keys.createdAt)
+ setPrimitiveValue(Date(), forKey: Keys.updatedAt)
+ setPrimitiveValue(false, forKey: Keys.isCompleted)
+ setPrimitiveValue("", forKey: Keys.title)
+ setPrimitiveValue(0, forKey: Keys.sortOrder)
}
public override func willSave() {
super.willSave()
- if !isDeleted && changedValues().keys.contains(where: { $0 != "updatedAt" }) {
- setPrimitiveValue(Date(), forKey: "updatedAt")
+ if !isDeleted && changedValues().keys.contains(where: { $0 != Keys.updatedAt }) {
+ setPrimitiveValue(Date(), forKey: Keys.updatedAt)
}
}
}