Да, строковые литералы допустимы на все время программы, даже во время разрушения статических объектов.
2.13.4/1 в Стандарте говорит
, обычный строковый литерал имеет тип "массив n символа константы" и статическая продолжительность хранения.
в Стандарте говорится относительно 'статической продолжительности хранения' в 3.7.1/1:
устройство хранения данных для этих объектов должно продолжиться в период программы.
Вы не можете делать то, что хотите с предикатом.
Операторы ANY
и ALL
применяются к тестируемому объекту (в данном случае Entry
), а не к содержимому коллекции (selectedTags
). Любой оператор вернет объект Entry
, который соответствует любому отдельному элементу коллекции. Оператор ANY
вернет первое найденное совпадение, а оператор ALL
вернет все совпадения. Ни в том, ни в другом случае они не вернут запись, которая соответствует каждому элементу в предоставленной коллекции.
(Похоже, что вы пытаетесь использовать фактические Tag
объекты в selectedTags
. Скорее всего, это тоже не сработает, потому что сравнение объектов в классах без специальных методов сравнения обычно дает сбой. Это также медленно. сравнивайте атрибуты в предикатах.)
Поскольку у вас уже есть нужные объекты Tag
, чтобы найти связанные с кандидатом объекты Entity
, вам просто нужно пройти отношение Tag.taggedEntries
. Затем вы должны найти пересечение всех наборов объекта Entity
, чтобы найти только те Entity
объекты, которые связаны с каждый выбранный Tag
объект. Поскольку нет оператора пересечения коллекций, вам нужен цикл.
if ([selectedEntries count]>=2) {
NSMutableSet *intersectEntries=[[NSMutableSet alloc] initWithCapacity:1];
for (int i=1; i<[selectedTags count]; i++) {
if ([intersectEntries count]==0) {
[intersectEntries unionSet:[[selectedEntries objectAtIndex:(i-1)] valueForKey:@"taggedEntries"]];
}
[intersectEntries intersectSet:[[selectedEntries objectAtIndex:i] valueForKey:@"taggedEntries"]];
}
}
(Примечание: я не проверял это, но оно должно работать.)
Теперь intersectEntries
должен содержать только те Entry
объекты, которые связаны с каждым выбранным тегом.