0

我有兩個多對多的相關實體,CustomerCity以及從它們生成的NSManagedObject子類。我從CustomerCity的關係被稱爲cities。在City有一個名爲city的屬性。現在,我想取得與簡單fetchResultsController一切從實體Customer獲取核心數據相關實體屬性

-(NSFetchedResultsController *) fetchedResultsController { 

    if (_fetchedResultsController != nil) 
    { 
     return _fetchedResultsController; 
    } 
    self.managedObjectContext = [[PTDataManager sharedManager] managedObjectContext]; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Customer" 
              inManagedObjectContext:[self managedObjectContext]]; 
    [fetchRequest setEntity:entity]; 

    _fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
                   managedObjectContext:self.managedObjectContext 
                    sectionNameKeyPath:nil 
                      cacheName:nil]; 
    _fetchedResultsController.delegate = self; 

    return _fetchedResultsController; 
} 

結果我與謂詞

@"cities.name CONTAINS[cd] %@" 

檢索樣樣精除cities財產((空)值)在Customer小類我可以使用方法:

-(City *)city 
{ 
    return (CDCities *)[[PTDataFetchHelper sharedInstance] entityForName:@"City" 
                  withServerID:self.city_server_id 
                  inContext:[self managedObjectContext]]; 
} 

我正在檢索city - 值很好,但th正在減慢UI(在tableView中顯示這些數據)。
所以,問題:

  • 如果我執行基本取這樣的,我只是在檢索指定實體的值,或從相關實體也值?
  • 如果我需要額外的謂詞,如何修改它以從City實體獲取city屬性?

回答

1

取回請求只取一個實體類型。如果您取Customer,則會得到Customer s。但是您可以遍歷核心數據關係而不需要執行額外的提取請求。只要詢問任何Customer實例的cities屬性的值。這將使您得到零個或多個City實例,並且您可以要求其中的每個實體具有其city屬性。

我不確定你在用@"cities.city [cd]"得到什麼。這不是一個謂詞。它可能是謂詞的一部分,但它不匹配city屬性。這就像一個方程的一面。

+0

感謝您的回答,先生!對不起,我很累,所以寫錯了謂詞,我的版本 - @「cities.name CONTAINS [cd]%@」,問題已更新。但是,如果我想要所有城市類型對象的所有名稱屬性,我應該在說明符中設置什麼? – Alex

+1

我不明白你在做什麼。謂詞通過僅允許與謂詞相匹配的實例來限制結果。既然你說你想要所有這些,一個謂詞沒有任何用處。如果你想要所有的城市名稱,爲什麼不抓取'城市'而不是'客戶'? –

+0

我想從'City'的'Customer'和'city'屬性的值中獲取所有內容。 – Alex

相關問題