私はコインアプリで働いています。コインは、コアデータによって管理されるテーブルビューでユーザーに提示されます。誰かが私のコアデータ名属性の最初の4文字をテーブルインデックスにする方法を知っていますか?
すべてのコイン名は「19」または「20」で始まります。テーブルビューでセクションインデックスを実装すると、インデックスに "1"と "2"しか表示されません。 "1"を押すとテーブルが "1900"コインに移動し、 "2"を押すと "2000"コインに移動します。私はなぜそれが、名前欄の最初の桁から来ているのか知っています。
「1910」、「1920」、「1930」などがありますので、ユーザーは10年にジャンプできます。
"titleForSection"という属性をモデルに追加し、 "1910"、 "1920"などを入力し、フェッチ要求セットでsectionNameKeyPathをmy @ "titleForSection"属性に設定しました。言うまでもなく、動作しません。
誰かがセクションインデックスをname属性の最初の4桁にする方法を知っていますか?
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [[fetchedResultsController sections] count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (self.searchIsActive) {
return [self.filteredListContent count];
}
NSInteger numberOfRows = 0;
if ([[fetchedResultsController sections] count] > 0) {
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
numberOfRows = [sectionInfo numberOfObjects];
}
return numberOfRows;
}
//for index
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return [fetchedResultsController sectionIndexTitles];
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
return [fetchedResultsController sectionForSectionIndexTitle:title atIndex:index];
}
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Coins" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
//set batch size
[fetchRequest setFetchBatchSize:20];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"sortOrder" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"titleForSection" cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
return fetchedResultsController;
}
UPDATE:
私は十年で、2010年にすべての方法を数値に文字列から私の「titleForSection」属性を変更し、その後1900年からデータベースを読み込ま。今私のテーブルのインデックスは、 "0"、 "1"、 "2"としか表示されません。なぜ私はそこに番号を置くことができないのか分かりません!
ええ、インデックスが押されたときにテーブルが1940にどのようにジャンプするのを知っていますか?何が彼らを「ラインアップ」にするのでしょうか? – RyeMAC3
この配列の最初のオブジェクトは、最初の行、2番目から2番目、3番目から3番目などにジャンプします。この配列が小さすぎると、最後の行にジャンプすることはできません。 – alhcr
はい、この表には350レコードあります。だから私はそうしたくない。また、ユーザーが行を削除すると、これがウィンドウの外に出ます。 – RyeMAC3