Единственное решение, которое я нашел до сих пор, - это выполнение второго запроса на выборку, который похож на первоначальный запрос на выборку, за исключением следующих отличий:
[fetchRequest setReturnsObjectsAsFaults:YES];
[fetchRequest setPropertiesToFetch:nil];
[fetchRequest setFetchLimit:1];
[fetchRequest setFetchOffset:index]; // The index for which the objectID is needed
[request setResultType:NSManagedObjectIDResultType];
Это приведет к тому, что запрос на выборку вернет массив с ровно одним объектом, требуемым objectID. Производительность кажется хорошей, даже если результат начального запроса на выборку содержит 10000 объектов.
Если есть более эффективные способы справиться с этим, я был бы рад, если бы кто-то мог опубликовать их здесь.