fix rare duplication of uniqueID values during import when an import candidate is added by a previous insertion block

This commit is contained in:
John Estropia
2021-01-23 16:51:45 +09:00
parent 18aac84335
commit edd8ba55d8
3 changed files with 6 additions and 3 deletions

View File

@@ -230,7 +230,10 @@ extension BaseDataTransaction {
} }
try autoreleasepool { try autoreleasepool {
if let object = existingObjectsByID[objectID] { if let object = existingObjectsByID[objectID]
?? self.context.insertedObjects
.compactMap({ O.cs_matches(object: $0) ? O.cs_fromRaw(object: $0) : nil })
.first(where: { $0.uniqueIDValue == objectID }) {
guard entityType.shouldUpdate(from: source, in: self) else { guard entityType.shouldUpdate(from: source, in: self) else {

View File

@@ -63,7 +63,7 @@ extension DiffableDataSource {
*/ */
open class TableViewAdapter<O: DynamicObject>: BaseAdapter<O, DefaultTableViewTarget<UITableView>>, UITableViewDataSource { open class TableViewAdapter<O: DynamicObject>: BaseAdapter<O, DefaultTableViewTarget<UITableView>>, UITableViewDataSource {
// MARK: Publi // MARK: Public
/** /**
Initializes the `DiffableDataSource.TableViewAdapter`. This instance needs to be held on (retained) for as long as the `UITableView`'s lifecycle. Initializes the `DiffableDataSource.TableViewAdapter`. This instance needs to be held on (retained) for as long as the `UITableView`'s lifecycle.

View File

@@ -53,7 +53,7 @@ import CoreData
) )
``` ```
*/ */
public protocol ImportableUniqueObject: ImportableObject { public protocol ImportableUniqueObject: ImportableObject, Hashable {
/** /**
The data type for the entity's unique ID attribute The data type for the entity's unique ID attribute