我有UIViewController有一個UISearchBar和UITableView。表格視圖用於顯示最近的搜索。保存最近的搜索在NSUserDefaults
我正在使用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。
問題是,當數組從字典中獲取所有值時,它們不是按照最近的順序。
我希望最新的內容顯示在列表頂部。
任何幫助?有沒有其他更好的方法來實現預期的任務?
保存一個數組而不是一個字典:字典是不排序的,數組是。 – meronix
[currentDefaults synchronize]; – Rajneesh071