commit 355e713aff031c0e678b8774d9575738ab5998b3
parent 3b7e30f4a3f9fae5be4464314b1f9bf054e56e18
Author: Michael Camilleri <[email protected]>
Date: Wed, 25 Feb 2026 16:24:48 +0900
Use setPrimitiveValue
Co-Authored-By: Codex GPT 5.3 <[email protected]>
Diffstat:
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/Listless/Sync/PersistenceController.swift b/Listless/Sync/PersistenceController.swift
@@ -29,11 +29,13 @@ private final class UpdatedAtMergePolicy: NSMergePolicy {
guard storeUpdatedAt > localUpdatedAt else { continue }
// Persisted values are newer; copy them onto the object to resolve conflict.
+ // Use setPrimitiveValue to bypass KVC change tracking so willSave() does not
+ // see these keys in changedValues() and overwrite updatedAt with Date().
for (key, value) in persistedSnapshot {
if value is NSNull {
- task.setValue(nil, forKey: key)
+ task.setPrimitiveValue(nil, forKey: key)
} else {
- task.setValue(value, forKey: key)
+ task.setPrimitiveValue(value, forKey: key)
}
}
}