我有一個使用核心數據填充的UITableView & sqlite。UITableView分組部分
我想根據數據庫表中的屬性在UITableView中分組。
例如如果我在數據庫表中有一個名爲「type」的類別字段,那麼將數據分段的最佳方法是什麼?
我見過使用數組的示例,但我遇到了核心數據。所有數據當前都是從數據庫中顯示出來的,我想以某種方式將其分開。
在此先感謝。
我有一個使用核心數據填充的UITableView & sqlite。UITableView分組部分
我想根據數據庫表中的屬性在UITableView中分組。
例如如果我在數據庫表中有一個名爲「type」的類別字段,那麼將數據分段的最佳方法是什麼?
我見過使用數組的示例,但我遇到了核心數據。所有數據當前都是從數據庫中顯示出來的,我想以某種方式將其分開。
在此先感謝。
如果您使用的是NSFetchedResultsController來獲取你的結果和它們連接起來到你的用戶界面非常簡單。只需將initWithFetchRequest
調用的sectionNameKeyPath:
參數設置爲NSFetchedResultsController
即可。
在這個例子中,它只是從NSFetchedResultsController的類引用中稍加修改,我已經定義了一個鍵路徑,它將使用名爲「group」的節作爲節標題。因此,如果您的數據庫中有一組的行設置爲「貓」,而其他行的組設置爲「狗」,則您的結果表視圖將包含2個部分 - 一個用於貓,一個用於狗。
NSManagedObjectContext *context = <#Managed object context#>;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Configure the request's entity, and optionally its predicate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"<#Sort key#>" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:context
sectionNameKeyPath:@"groups"
cacheName:@"<#Cache name#>"];
[fetchRequest release];
NSError *error;
BOOL success = [controller performFetch:&error];
有關鍵路徑的更多信息,您必須搜索Xcode文檔集中的關鍵路徑文檔。但對於簡單的情況,它只是返回對象的屬性名稱。
我發現一個數組在使用段時非常有用。看看我的示例代碼
好友排序(從CoreData)
NSMutableArray* unsortedFriends = [appDelegate.core.serviceManager.storageManager getFriendList];
for(ELMUser* user in unsortedFriends) {
if ([user.friendshipConfirmed boolValue]) {
if (![user.localDeleted boolValue]) {
[friendList addObject:user];
}
} else {
if (![user.localDeleted boolValue]) {
[friendListUnconfirmed addObject:user];
}
}
}
listOfItems = [[NSMutableArray alloc] init];
[listOfItems addObject:friendList];
[listOfItems addObject:friendListUnconfirmed];
顯示電池
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
NSMutableArray *subArray = [listOfItems objectAtIndex:indexPath.section];
ELMUser* user = (ELMUser*)[subArray objectAtIndex:indexPath.row];
....
感謝您的信息。非常感謝 – hanumanDev 2010-08-24 23:41:50
感謝您的文章,那就是我一直在尋找的。 – hanumanDev 2010-08-24 23:43:28