import Cocoa
import SwiftyJSON
+import Doutaku
struct MappingConfiguration<T: NSManagedObject> {
// delete api_ prefix.
func keyByDeletingPrefix() -> String {
- if self.characters.count < 5 { return self }
+ if self.count < 5 { return self }
return String(self[index(startIndex, offsetBy: 4)...])
}
let old = object.value(forKey: key)
if !isEqual(old as AnyObject?, validValue) {
- object.notifyChangeValue(forKey: key) {
-
- object.setValue(validValue, forKey: key)
- }
+ object.setValue(validValue, forKey: key)
}
}
}
}
- func commit() {
+ private func sortedObjects<T>(_ entity: Entity<T>) -> [T] {
let store = configuration.editorStore
- guard let objects = try? store.objects(of: configuration.entity, sortDescriptors: sortDescriptors) else {
+ guard let objects = try? store.objects(of: configuration.entity) else {
- return Logger.shared.log("Can not get entity named \(configuration.entity.name)")
+ Logger.shared.log("Can not get entity named \(configuration.entity)")
+ return []
}
+ return (objects as NSArray).sortedArray(using: sortDescriptors) as? [T] ?? []
+ }
+ private func commintInContext() {
+
+ let store = configuration.editorStore
+ let objects = sortedObjects(configuration.entity)
+
let list = (data.type == .array ? data.arrayValue : [data])
list.forEach {
} else {
- fatalError("Can not get entity named \(configuration.entity.name)")
+ fatalError("Can not get entity named \(configuration.entity)")
}
}
finishOperating()
- store.save(errorHandler: store.presentOnMainThread)
+ store.save()
+ }
+
+ func commit() {
+
+ configuration.editorStore
+ .sync {
+ self.commintInContext()
+ }
}
func beginRegister(_ object: ObjectType) {}