Actually it’s pretty simple to do. But if you try just by reading the documentation you’ll find the same problem I did.
Suppose that I need to get a list of all ages I had on my database to make a hierarchical navigation that starts by selecting an age. If were working directly with the SQLite store I could execute this SQL to do this:
1 2 3
Since the project uses Core Data I shouldn’t access the underlying database store directly.
class instead of plain SQL. The
returnsDistinctsResults property seems to do the trick,
its documentation warns about a special consideration:
Returns a Boolean value that indicates whether the fetch request returns only distinct values for the fields specified by propertiesToFetch.
This value is only used if a value has been set for
So it’s saying is that the
returnsDistinctsResults only works if the property
propertiesToFetch is also set. Pretty straightforward. Except that there’s one more
- undocumented - property that needs to be set:
The default value of
NSManagedObjectResultType which returns
the expected managed objects. To make the distinct results works the value needs to be set to
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
If you forget to set the
resultType there will be no errors, but the
returnsDistinctResults will be ignored and your result will have all
ages of the database.