Skip to content

Commit 46e83df

Browse files
authored
Merge pull request #1243 from Esri/df/updateApplyEdits
`FeatureFormView` - Revise `applyEdits` method in example and tutorial code
2 parents 1737a28 + 574fdd2 commit 46e83df

File tree

3 files changed

+57
-30
lines changed

3 files changed

+57
-30
lines changed

Examples/Examples/FeatureFormExampleView.swift

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,30 +89,39 @@ extension FeatureFormExampleView {
8989
defer { editsAreBeingApplied = false }
9090

9191
for table in editedTables {
92+
guard editedTables.contains(where: { $0 === table }) else {
93+
// Edits to this table were already batch-applied to the
94+
// geodatabase in a previous iteration.
95+
break
96+
}
9297
guard let database = table.serviceGeodatabase else {
9398
throw .other("No geodatabase found.")
9499
}
95100
guard database.hasLocalEdits else {
96101
throw .other("No database edits found.")
97102
}
98-
let resultErrors: [Error]
99103
do {
100-
if let serviceInfo = database.serviceInfo, serviceInfo.canUseServiceGeodatabaseApplyEdits {
104+
let makeSubmissionError: (_ errors: [Error]) -> SubmissionError = { errors in
105+
.other("Apply edits returned ^[\(errors.count) error](inflect: true).")
106+
}
107+
if database.serviceInfo?.canUseServiceGeodatabaseApplyEdits ?? false {
101108
let featureTableEditResults = try await database.applyEdits()
102-
resultErrors = featureTableEditResults.flatMap(\.editResults.errors)
109+
let resultErrors = featureTableEditResults.flatMap(\.editResults.errors)
110+
guard resultErrors.isEmpty else {
111+
throw makeSubmissionError(resultErrors)
112+
}
113+
editedTables.removeAll { $0.serviceGeodatabase === database }
103114
} else {
104115
let featureEditResults = try await table.applyEdits()
105-
resultErrors = featureEditResults.errors
116+
let resultErrors = featureEditResults.errors
117+
guard resultErrors.isEmpty else {
118+
throw makeSubmissionError(resultErrors)
119+
}
120+
editedTables.removeAll { $0 === table }
106121
}
107122
} catch {
108123
throw .anyError(error)
109124
}
110-
editedTables.removeAll { $0.tableName == table.tableName }
111-
if !resultErrors.isEmpty {
112-
throw .other(
113-
"Apply edits returned ^[\(resultErrors.count) error](inflect: true)."
114-
)
115-
}
116125
}
117126
}
118127

Sources/ArcGISToolkit/Documentation.docc/Resources/FeatureFormView/FeatureFormViewTutorialSection1Step4.swift

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,30 +56,39 @@ extension FeatureFormExampleView {
5656
defer { editsAreBeingApplied = false }
5757

5858
for table in editedTables {
59+
guard editedTables.contains(where: { $0 === table }) else {
60+
// Edits to this table were already batch-applied to the
61+
// geodatabase in a previous iteration.
62+
break
63+
}
5964
guard let database = table.serviceGeodatabase else {
6065
throw .other("No geodatabase found.")
6166
}
6267
guard database.hasLocalEdits else {
6368
throw .other("No database edits found.")
6469
}
65-
let resultErrors: [Error]
6670
do {
67-
if let serviceInfo = database.serviceInfo, serviceInfo.canUseServiceGeodatabaseApplyEdits {
71+
let makeSubmissionError: (_ errors: [Error]) -> SubmissionError = { errors in
72+
.other("Apply edits returned ^[\(errors.count) error](inflect: true).")
73+
}
74+
if database.serviceInfo?.canUseServiceGeodatabaseApplyEdits ?? false {
6875
let featureTableEditResults = try await database.applyEdits()
69-
resultErrors = featureTableEditResults.flatMap(\.editResults.errors)
76+
let resultErrors = featureTableEditResults.flatMap(\.editResults.errors)
77+
guard resultErrors.isEmpty else {
78+
throw makeSubmissionError(resultErrors)
79+
}
80+
editedTables.removeAll { $0.serviceGeodatabase === database }
7081
} else {
7182
let featureEditResults = try await table.applyEdits()
72-
resultErrors = featureEditResults.errors
83+
let resultErrors = featureEditResults.errors
84+
guard resultErrors.isEmpty else {
85+
throw makeSubmissionError(resultErrors)
86+
}
87+
editedTables.removeAll { $0 === table }
7388
}
7489
} catch {
7590
throw .anyError(error)
7691
}
77-
editedTables.removeAll { $0.tableName == table.tableName }
78-
if !resultErrors.isEmpty {
79-
throw .other(
80-
"Apply edits returned ^[\(resultErrors.count) error](inflect: true)."
81-
)
82-
}
8392
}
8493
}
8594

Sources/ArcGISToolkit/Documentation.docc/Resources/FeatureFormView/FeatureFormViewTutorialSection1Step5.swift

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,30 +71,39 @@ extension FeatureFormExampleView {
7171
defer { editsAreBeingApplied = false }
7272

7373
for table in editedTables {
74+
guard editedTables.contains(where: { $0 === table }) else {
75+
// Edits to this table were already batch-applied to the
76+
// geodatabase in a previous iteration.
77+
break
78+
}
7479
guard let database = table.serviceGeodatabase else {
7580
throw .other("No geodatabase found.")
7681
}
7782
guard database.hasLocalEdits else {
7883
throw .other("No database edits found.")
7984
}
80-
let resultErrors: [Error]
8185
do {
82-
if let serviceInfo = database.serviceInfo, serviceInfo.canUseServiceGeodatabaseApplyEdits {
86+
let makeSubmissionError: (_ errors: [Error]) -> SubmissionError = { errors in
87+
.other("Apply edits returned ^[\(errors.count) error](inflect: true).")
88+
}
89+
if database.serviceInfo?.canUseServiceGeodatabaseApplyEdits ?? false {
8390
let featureTableEditResults = try await database.applyEdits()
84-
resultErrors = featureTableEditResults.flatMap(\.editResults.errors)
91+
let resultErrors = featureTableEditResults.flatMap(\.editResults.errors)
92+
guard resultErrors.isEmpty else {
93+
throw makeSubmissionError(resultErrors)
94+
}
95+
editedTables.removeAll { $0.serviceGeodatabase === database }
8596
} else {
8697
let featureEditResults = try await table.applyEdits()
87-
resultErrors = featureEditResults.errors
98+
let resultErrors = featureEditResults.errors
99+
guard resultErrors.isEmpty else {
100+
throw makeSubmissionError(resultErrors)
101+
}
102+
editedTables.removeAll { $0 === table }
88103
}
89104
} catch {
90105
throw .anyError(error)
91106
}
92-
editedTables.removeAll { $0.tableName == table.tableName }
93-
if !resultErrors.isEmpty {
94-
throw .other(
95-
"Apply edits returned ^[\(resultErrors.count) error](inflect: true)."
96-
)
97-
}
98107
}
99108
}
100109

0 commit comments

Comments
 (0)