RUMM-1583 Fix attributes reading in Objective-C #654
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What and why?
📦 This PR fixes
DatadogObjc
issue with retrieving back attribute values in public APIs.It was not possible to obtain the value of
Any
attribute, i.e. this would fail:It would fail because
"bar"
is wrapped intoAnyEncodable(value: "bar")
type erasure as part of our Objective-C <> Swift interoperability (Swift SDK represents attributes asEncodable
).AnyEncodable
isinternal
type toDatadogObjc
so it was not even possible to read the attribute value back in any other way.How?
I introduced
func castAttributesToObjectiveC(_ attributes: [String: Encodable]) -> [String: Any]
function to unpackAnyEncodable
values before they are passed to the user.This had to be used in
DDRUMView
,DDRUMAction
and all generatedRUMDataModels
for Objective-C.Now, users will get exactly what they set through our Objective-C API.
Review checklist