Прототип делает его очень простым
new Ajax.Request( '/myurl', {
method: 'get',
parameters: { 'param1': 'value1'},
onSuccess: function(response){
alert(response.responseText);
},
onFailure: function(){
alert('ERROR');
}
});
Если у вас уже есть экземпляр A, просто получите доступ к связанным экземплярам B через аксессор A.
Если вам нужно напрямую получить все B, связанные с конкретным A (вы не 't в этом случае), вы должны создать запрос на выборку для объекта B с предикатом, основанным на (обратном) отношении Bs к A. (Конкретный синтаксис будет зависеть от имени обратной связи и от того, будет ли это обратное отношение относится к одному или ко многим.)
Вы должны указать обратную связь в классе B, чтобы делать то, что вы просите.
Однако я не уверен, почему вы возражаете (без каламбура), чтобы схватить набор объектов B уже в объекте A. Хотя сами объекты загружаются лениво, поскольку у вас уже есть A в памяти, у меня есть догадка (хотя специалисту нужно будет проверить), что было бы более эффективно просто захватить набор от A, чем указать новый NSPredicate и создать совершенно новый Fetch.
Конечно, под «более эффективным» мы говорим о миллисекундах, даже на таком медленном устройстве, как iPhone. Я бы взял набор из объекта A, потому что синтаксис чище. Тот факт, что он также может быть быстрее, является плюсом.
У меня похожая ситуация.
Я хочу использовать NSFetchedResultsController для управления B в отношении «один ко многим» (A - >> B). Один из способов сделать это - создать предикат, подобный приведенному ниже, и применить его к сущности B:
NSPredicate *Predicate = [NSPredicate predicateWithFormat:
@"ANY hasParent.label == 'A'"];
Но это ужасно медленный способ делать что-то, и его следует избегать любой ценой. Я пробовал это на 25000 объектов, чтобы получить около 300, и симулятору потребовалось около 15 секунд. Он не завершал выборку на iPhone и неоднократно давал сбой.
Другой способ - сделать то, что уже упоминалось, создать массив NSArray из набора, удерживаемого A, и отсортировать его. Если вы отправите allObjects в набор, вы получите обратно массив. A - это полученный ранее объект NSManagedObject.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc]
initWithKey:@"Name"
ascending:YES];
NSArray *lotsOfB = [[[A hasRelationsTo]
allObjects]
sortedArrayUsingDescriptors: sortDescriptors];
Это очень быстро. Никаких лагов в симуляторе или на устройстве. Но вы не можете использовать NSFetchedResultsController печальные времена: - (
Надеюсь, что это поможет.
Я тоже в похожей ситуации.
У меня не так много объектов, как у pingbat, но мне потребовалось 15 секунд, чтобы получить "ANY hasParent.label == 'A'"
Мне нужно использовать NSFetchedREsultsController, следовательно, мне нужно переделать модель. Я сделал это, чтобы сохранить отношение ко всем как свойство строки и построить предикат "hasParent contains %@".
Урок, который я усвоил, заключается в том, что наличие предиката о том, что поперечное отношение к любому имеет BIG хит производительности...