UISearchBarとUITableViewを持つUIViewControllerがあります。テーブルビューは、最近の検索を表示するために使用されます。
NSUserDefaultsを使用して検索テキストを保存しています。
これが私がしていることです:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    DLog(@"Search")
    NSString *searchText = [self.searchBar text];
    [self.recentSearchesDict setObject:searchText forKey:searchText];
    self.recentSearchesStrings = [[self.recentSearchesDict allValues] mutableCopy];
    [self saveRecentSearches];
    [self.recentSearchList reloadData];
}
テーブルビューでのエントリの重複を避けるために、キーと同じテキストを使用してテキストオブジェクトをNSMutableDictionaryに保存します。
と:
- (void)saveRecentSearches
{
    NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
    if (self.recentSearchesDict) {
        [currentDefaults setValue:self.recentSearchesDict forKey:@"recentSearchesArray"];
    }
}
NSMutableDictionaryをNSUserDefaultsに保存します。
viewDidLoadで私はこれを呼んでいます:
- (void)loadRecentSearches
{
    NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
    self.recentSearchesDict = [[currentDefaults objectForKey:@"recentSearchesArray"] mutableCopy];
    if (!self.recentSearchesDict) {
        self.recentSearchesStrings = [[NSMutableArray alloc] init];
        self.recentSearchesDict = [NSMutableDictionary dictionary];
        return;
    }
    self.recentSearchesStrings = [[self.recentSearchesDict allValues] mutableCopy];
}
テーブルビューにデータを入力するために、NSMutableArrayオブジェクトrecentSearchesStringsを使用しています。
問題は、配列がディクショナリからすべての値を取得するときに、それらが最新の順序ではないことです。
リストの一番上に最新のものを表示したい。
何か助けはありますか?目的のタスクを達成するための他のより良いアプローチはありますか?