2014-10-20 131 views
0

這是我的數據模型核心數據:NSFetchedResultsController

enter image description here

在我的TableView,我想顯示firstcity

以下是我的代碼,我接他們。我得到first數據,但不是city

-(NSFetchedResultsController *)fetchedResultsController 
{ 
    if(fetchedResultsController != nil) 
    { 
     return fetchedResultsController; 
    } 

    NSManagedObjectContext *context = [self managedObjectContext]; 

    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entityPerson = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context]; 
    [request setEntity:entityPerson]; 

    NSSortDescriptor *sortName = [[NSSortDescriptor alloc] initWithKey:@"first" ascending:YES]; 
    NSSortDescriptor *sortAddress = [[NSSortDescriptor alloc] initWithKey:@"address.city" ascending:NO]; 
    request.sortDescriptors = @[sortAddress, sortName]; 
    [request setFetchBatchSize:50]; 

    NSFetchedResultsController *fetchedResults = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; 
    fetchedResultsController = fetchedResults; 
    fetchedResultsController.delegate = self; 

    return fetchedResultsController; 
} 

這是我取的結果和下面是我嘗試顯示獲取的成果

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"TableCell"; 
    TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    if (cell == nil) 
    { 
     cell = [[TableCell alloc] initWithStyle:UITableViewCellStyleDefault 
           reuseIdentifier:CellIdentifier]; 
    } 

    [self configureCell:cell atIndexPath:indexPath]; 

    return cell; 
} 

-(void)configureCell:(TableCell *)cell atIndexPath:(NSIndexPath *)indexPath 
{ 
    NSManagedObject *obj = [fetchedResultsController objectAtIndexPath:indexPath]; 

// cell.lblName.text = @""; 
    [cell.lblName setText:[obj valueForKey:@"first"]]; 
// cell.lblCity.text = @""; 
    [cell.lblCity setText:[obj valueForKey:@"city"]]; 
} 

回答

0

你獲取結果控制器配置返回Person對象,因此您需要間接引用關係的屬性:

[cell.lblCity setText:[obj valueForKeyPath:@"address.city"]]; 

或者如果您創建了子對象NSManagedObject的姑娘,說的那樣Person,你可以修改你的代碼:

Person *obj = [fetchedResultsController objectAtIndexPath:indexPath]; 
cell.lblName.text = obj.first; 
cell.lblCity.text = obj.address.city; 
+0

@VNJ對不起,我用了'valueForKey:'我應該有'valueForKeyPath:' - 我已經修改了我的答案來糾正。 – pbasdf 2014-10-20 21:10:34

相關問題