New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iOS 17 Data equality checks have changed [JSONEncoding/JSONDecoding] #4812
Comments
@ypli-chn FYI -- since I see in a recent commit you modified decoding for generics. |
samitaha2
changed the title
iOS 17 Data equality checks have changed.
iOS 17 Data equality checks have changed [JSONEncoding/JSONDecoding'
Aug 18, 2023
samitaha2
changed the title
iOS 17 Data equality checks have changed [JSONEncoding/JSONDecoding'
iOS 17 Data equality checks have changed [JSONEncoding/JSONDecoding]
Aug 18, 2023
@samitaha2 This library is just an open source version of Foundation, and only affects the behavior under Linux. The Foundation used in the iOS system is not from this repository. |
The iOS 17 version is here: https://github.com/apple/swift-foundation/blob/main/Sources/FoundationEssentials/JSON/JSONDecoder.swift |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Data equality checks have incorrectly changed on iOS 17.
Step to reproduce:
Run XCTestCase file in iOS 16. It will pass.
Run XCTestCase file in iOS 17. It will fail.
Suspected Cause:
In iOS 17, Data has changed how it performs equality. Previously equality did not care about ordered keys, now it does.
I've noticed if I modify the test case to use a JSONEncoder setting of encoder.outputFormatting = .sortedKeys, then it passes.
Reason this is a bug:
This is unexpected and changed behavior. Equality should not care what the ordering of the keys are when comparing one data object to another data object. Ordering is irrelevant for a JSON object. It's the content that matters. This will cause a huge regression for us in our previously released app if this hits production.
The text was updated successfully, but these errors were encountered: