Подтвердить что ты не робот

Как эффективно выполнять преобразование NSSet (Objective-C) - для многих отношений в Core Data?

Взаимодействие со многими из основных данных представлено NSSet (автоматически генерируется с помощью редактора... Создание подкласса NSManagedObject.

Каков наиболее эффективный способ перебора NSSet *?

NSSet* groups = [contact groups];
for(Group* group in groups) {
    NSString* groupName = [group name];
}

или

NSSet* groups2 = [contact groups];
NSArray* groupsArray = [groups2 allObjects];
for(Group* group in groupsArray) {
    NSString* groupName = [group name];
}

или другим способом?

4b9b3361

Ответ 1

Первое, вероятно, более эффективно. Если последние были более эффективными, Apple просто использовала бы этот маршрут для реализации первого.

Если говорить, если вы спрашиваете, потому что производительность, похоже, является проблемой, вероятно, больше того, что вы тратите много времени на материал Core Data для сбоев объектов. Разумным шагом было бы сделать выборку на self in %@ с помощью groups; установите для запроса выборки returnsObjectsAsFaults значение НЕТ и убедитесь, что указаны соответствующие relationshipKeyPathsForPrefetching. Чистый эффект от этого будет заключаться в том, что все данные, которые вы собираетесь перебирать, извлекаются за одну поездку в хранилище резервных копий, а не каждый отдельный кусочек, получаемый по требованию в большом количестве отдельных отключений.