Core Data Transformable attribute with IN %@ predicate returns empty results when array contains more than 100 items on iOS 27

I’m seeing what appears to be a Core Data regression on iOS 27 when using an IN %@ predicate with a Transformable attribute containing String values.

Before iOS 27, the following predicate worked correctly regardless of the number of values in the array:

[NSPredicate predicateWithFormat:@"field IN %@", valuesArray]

On iOS 27, I get different results depending on the number of items in valuesArray:

  • valuesArray.count <= 100 → works correctly and returns the expected objects.
  • valuesArray.count > 100 → returns an empty result, even though matching objects exist in the Core Data database.

Reproduction

  1. Create a Core Data entity with a Transformable attribute containing String values.
  2. Store objects with values in this attribute.
  3. Create an array containing matching values.
  4. Execute a fetch using:

[NSPredicate predicateWithFormat:@"field IN %@", valuesArray]

  1. Test with 100 values and then with more than 100 values.

The issue is consistently reproducible on iOS 27.

Interestingly, I also tested manually transforming the values in the array to the same representation used by the Transformable attribute. When doing this, the predicate works correctly even with more than 100 values.

This makes me suspect that iOS 27/Core Data may not correctly transform the values supplied to the IN predicate when the array contains more than 100 items.

Has anyone else observed this behavior on iOS 27?

Is there a known limitation or change in Core Data predicate handling for Transformable attributes in iOS 27?

The same Core Data model and predicate worked correctly on previous iOS versions.