2013-08-01 5 views
0

У меня есть два объекта: люди и сеть (экран xcdatamodeld - http://rghost.ru/47818182/image.png). В способе fetch i извлечь массив людей, и я хочу напечатать network.url.Как извлечь данные из основных данных?

Ошибка:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSFaultingMutableSet url]: unrecognized selecto 

Код:

- (IBAction)insert:(id)sender 
{ 
    NSMutableSet* networks = [NSMutableSet set]; 

    // People entity 
    People *people = (People *)[NSEntityDescription insertNewObjectForEntityForName:@"People" inManagedObjectContext:self.managedObjectContext]; 
    people.name = @"Alex"; 
    people.age = @23; 

    // Network entity 
    Network *network = (Network *)[NSEntityDescription insertNewObjectForEntityForName:@"Network" inManagedObjectContext:self.managedObjectContext]; 
    network.url = @"http://facebook.com/alex"; 
    [networks addObject:network]; 
[people addNetwork:networks]; 

    // Save 
    [self.managedObjectContext save:nil]; 
} 

- (IBAction)fetch:(id)sender 
{ 
    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"People"]; 
    NSArray *peoples = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; 

    for (People *people in peoples) 
    { 
     Network *network = (Network *)people.network; 
     NSLog(@"%@", network.url); 
    } 
} 

ответ

0

"Люди - >> Сеть" является отношения ко многим, поэтому people.network является набор объектов сети, и ни одного объекта сети. должно работать:

for (People *people in peoples) 
{ 
    for (Network *network in people.network) 
    { 
     NSLog(@"%@", network.url); 
    } 
} 
0

, потому что его слишком много отношения между людьми и сетью. поэтому ваш объект вернет NSSet, если вы посмотрите на свой ManagedObject класс People. поэтому ваш цикл должен выглядеть так.

for (People *people in [peoples allObjects]) 
{ 
    Network *network = (Network *)people.network; 
    NSLog(@"%@", network.url); 
} 
Смежные вопросы