Это очень противоречит интуиции. Я почесал голову в течение целого дня, пока не понял, что не могу распечатать весь объект NSSet или каждый NSManagedObject в наборе, например:
for (Order *order in fetchedObjects) {
for (Unit *unit in [order units]) {
NSLog(@"%@", unit);
}
}
Это вызовет ошибку в xcode. Но если я распечатаю каждый атрибут в каждом NSMangedObject, это нормально. Я думаю, у Apple есть проблемы с памятью из-за автоматической загрузки многих объектов. В сценарии, в котором существует цепочка отношений «многие ко многим», он потребляет много памяти. Так что нужно лениво загружать каждый атрибут.
for (Order *order in fetchedObjects) {
for (Unit *unit in [order units]) {
NSLog(@"Unit Name : %@", unit.name);
}
}
Это выведет имя устройства ..