0

我想創建一個帶有兩個不同部分的UITableView。我知道我可以將他們分組在我管理對象的屬性上。舉例來說,如果我想將它們分組每name我會怎麼做:使用NSFetchedResultsController創建一個分段的UITableView

[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest 
         managedObjectContext:_context 
         sectionNameKeyPath:@"name" 
         cacheName:@"uploadProperties"]; 

我回到像secionts數量:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [[_fetchedResultsController sections] count]; 
} 

的問題是,雖然我不想按屬性對其進行分組(如名稱)。我想將它們分組以獲得特定的值,即一個部分具有pud_id = 0,另一個部分具有pud_id > 0

我該如何做到這一點?有沒有可能使用某種where子句?或者,將我的管理對象上創建一個屬性,並在sectionNameKeyPath如用這個:

- (BOOL) hasPudZero { 
    if (self.pud_id == 0) 
     return YES; 
    return NO; 
} 

感謝您的輸入!

+1

根據以前的經驗,我發現fetchedresultscontroller只對非常簡單的查詢非常有用,在這種情況下,您可能需要烘烤自己的提取並將兩個對象數組排列成另一個可用於你的數據源方法。 – Rog 2012-01-05 19:58:59

回答

0

也許你可以創建一個類型爲NSString的transient屬性來返回兩個字符串之一?

- (NSString *)sectionIdentifier 
{ 
    [self willAccessValueForKey:@"sectionIdentifier"]; 
    NSString *tmp = [self primitiveValueForKey:@"sectionIdentifier"]; 
    [self didAccessValueForKey:@"sectionIdentifier"]; 

    if (!tmp) { 
     if (self.pud_id == 0) { 
      tmp = @"SectionOne"; 
     } else { 
      tmp = @"SectionTwo"; 
     } 
     [self setPrimitiveValue:tmp forKey:@"sectionIdentifier"]; 
    } 
    return tmp; 
} 

,然後創建NSFetchedResultsController時使用sectionNameKeyPath:@"sectionIdentifier"。如果put_id的值發生變化,請確保將sectionIdentifier的原始值恢復爲零。

相關問題