我在查詢核心數據以查找一羣人中的「最舊」和「最高」。對於較大的數據集,這通常起作用(因爲重複匹配的機會較少),但是對於一個小數據集,其中最老的人可能也是最大的我有問題。通過NSFetchedResultsController在UITableView中顯示重複的單元格?
[John, 77, 160]
[Pete, 56, 155]
[Jane, 19, 130]
[Fred, 27, 159]
[Jill, 32, 128]
,因爲我想先運行2 NSFetchRequests
顯示在2 UITableViewCell
個UITableView
我在做這個該信息(一個找老大,老二找到最重的),我把他們帶到了objectID
s,然後將它們添加到我用來設置我的NSFetchedResultsController
的最後一個NSFetchRequest
。
// FETCH REQUEST - OLDEST, HEAVIEST
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"People"];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:descriptor]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", IDArray];
[fetchRequest setPredicate:predicate];
如果我在最後的NSFetchRequest
的「打印說明」中確實包含2個指向managedObjects的指針。
(i.e. [John, 77, 160] [John, 77, 160])
我的問題似乎是,當我做
[[self fetchedResultsController] performFetch:nil];
的UITableView
委託方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSArray *sectionArray = [[self fetchedResultsController] sections];
id <NSFetchedResultsSectionInfo> sectionInfo = [sectionArray objectAtIndex:0];
NSUInteger numberOfRows = [sectionInfo numberOfObjects];
NSLog(@"ROWS: %u", numberOfRows);
return numberOfRows;
}
只顯示numberOfRows
爲1,只顯示一個[約翰,77 ,160]在我的UITableView
。
獲取請求不會返回重複的對象。它返回與謂詞相匹配的所有對象 - 而這恰好就是您的案例中的一個對象。爲什麼你需要一個獲取結果控制器?如果您已有2個對象,請將它們放入數組中並使用普通表視圖顯示。 – 2013-03-20 12:18:14
嗨馬丁,這是一個很好的觀點,有問題的ViewController從一個簡單的列表和一個提取的結果控制器開始,當我添加額外的搜索和排序時,我一直使用現有的提取結果控制器。直到現在(測試5人而不是500人)我沒有注意到任何問題,我也不知道提取請求不會返回重複的對象。我會考慮改變代碼來使用你所建議的數組。謝謝,非常感謝。 – fuzzygoat 2013-03-20 12:25:06