2013-08-01 97 views
0

我有兩個實體:人員和網絡(xcdatamodeld屏幕 - http://rghost.ru/47818182/image.png)。 在方法提取我提取陣列人民,我想打印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

因爲它與人和網絡之間的關係太多。所以如果你看看你的ManagedObjectPeople,你的對象將返回NSSet。所以你的循環應該看起來像這樣。

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