NSFetchedResultController
でコアデータを使用しています。この場合、ユーザーグループ数はn
で、ユーザーは特定のグループを選択するか、all group
を選択することができます。手動でAll group
タイトル、static ID
と関連コンテンツをデータベースに追加しました。iOSのカスタムソート、Coredataの上にデフォルト(全グループ)のタイトルを表示したい
NSFetchRequest <IRSUserAssetGroup *> *fetchRequest = [NSFetchRequest fetchRequestWithEntityName: [IRSUserAssetGroup entityName]];
NSSortDescriptor *nameSortDescriptor = [NSSortDescriptor sortDescriptorWithKey: NSStringFromSelector(@selector(assetGroupName))
ascending: YES
selector: @selector(localizedCaseInsensitiveCompare:)];
[fetchRequest setSortDescriptors: @[nameSortDescriptor]];
[fetchRequest setFetchBatchSize: 4];
NSManagedObjectContext *mainContext = [[IRSCoreDataManager sharedManager] managedObjectContext];
NSFetchedResultsController <IRSUserAssetGroup *> *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest: fetchRequest
managedObjectContext: mainContext
sectionNameKeyPath: nil
cacheName: nil];
NSError *fetchError = nil;
if (![fetchedResultsController performFetch: &fetchError])
FCALog(@"fetch error: %@", fetchError);
[self setUserAssetGroupFetchedResultsController: fetchedResultsController];
これは私のFRC
コードです。私は名前で並べ替えを使用しています。グループ名の中には数字で始まるものもあります。このため、All group
は最初の場所には配置されません。
可能ですか?All group
いつもトップソートになりますか?
エクストラ:@[@1, @5, @"text", @"aaaaaaa", @"All group"]
:私は、検索オプション
例でテーブルビューを使用しています。ここではAll group
が常にリストの上に表示されます。どのように私はそれを並べ替えることができます。
出力:@[@"All group", @1, @5, @"aaaaaaa", @"text"]
データモデルでこれを解決しないでください。ただし、静的セルを手動でTableViewDataSourceに追加してください。したがって、インデックス0のオブジェクトは 'All groups'セルです。' FetchedresultsController'からアイテムを取得するときにインデックスから1を引いてください。 – rckoenes
ありがとうございます。今、私は並べ替えの種類だけを働いています。あなたは@jonRoseの答えについてどう思いますか?どのグループが効率的かスピードなのかなど、どれも良いです。 – user3589771
前に言及したように、 'All group'には静的' ID'があります。これで 'NSPredicate * allGroupPredicate = [NSPredicate predicateWithFormat:@"%K!= %d "、NSStringFromSelector(@selector(assetGroupID))、allUserGroupID];"これを使用します。 On 'cellForRowAtIndexPath'' All group'の静的セル設定を行います。それはあなたが伝えようとしているものですか? – user3589771