required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entity: Material.entity,
+ self.configuration = MappingConfiguration(entity: Material.self,
dataKeys: MaterialMapper.dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
case .remodelSlot: return ["api_data", "api_after_material"]
- default: return Logger.shared.log("Missing API: \(apiResponse.api)", value: ["api_data"])
+ default:
+
+ Logger.shared.log("Missing API: \(apiResponse.api)")
+
+ return ["api_data"]
}
}
func commit() {
+ configuration.editorStore.sync(execute: commintInContext)
+ }
+
+ private func commintInContext() {
+
guard let store = configuration.editorStore as? ServerDataStore,
let material = store.material() ?? store.createMaterial() else {
- return Logger.shared.log("Can not create Material")
+ Logger.shared.log("Can not create Material")
+
+ return
}
if let _ = data[0].int {
- let array = data.arrayValue.flatMap { $0.int }
+ let array = data.arrayValue.compactMap { $0.int }
register(material, data: array)
} else if let _ = data[0].dictionary {
data.forEach {
- guard let i = $0["api_id"].int, case 1...keys.count = i else { return }
- guard let newValue = $0["api_value"].int else { return }
+ guard let i = $0["api_id"].int, case 1...keys.count = i else {
+
+ return
+ }
+ guard let newValue = $0["api_value"].int else {
+
+ return
+ }
material.setValue(newValue as NSNumber, forKey: keys[i - 1])
}