Fix -[RLMSwiftCollectionBase isEqual:]
#7229
Open
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.
There is a bug in Realm where
-[RLMSwiftCollectionBase isEqual:]
does not correctly test for twoList<>
s equality.Simple example:
Why is this a problem?
-[RLMSwiftCollectionBase isEqual:]
is currently implemented in a way that it can only ever returnYES
for unmanaged list objects (see line 89).This change was introduced by #6845, which attempted to add support for comparing unmanaged
List
s andRLMArray
s. However, it seems like this PR in fact changed the behaviour so that instead of also being able to compare unmanaged lists, you can now only compare unmanaged lists.Note: The PR mentioned above also added
-[RLMArray isEqual:]
, with a pretty much identical implementation (only returnYES
for unmanaged objects).However, since
RLMArray
seems to be used exclusively for unmanaged arrays, I left that method unchanged. (RLMManagedArray
seems to have a correctisEqual:
implementation.)