gpt4 book ai didi

iphone - 在 NSUserDefaults 中保存最近的搜索

转载 作者:行者123 更新时间:2023-11-28 22:48:03 25 4
gpt4 key购买 nike

我的 UIViewController 具有 UISearchBar 和 UITableView。表格 View 用于显示最近的搜索。

我正在使用 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 中,并将相同的文本作为键,以避免在 TableView 中出现重复条目​​。

和:

- (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];
}

为了填充 TableView ,我使用了 NSMutableArray 对象 recentSearchesStrings。

问题是当数组从字典中获取所有值时,它们不是按照最近的顺序排列的。

我希望最新的显示在列表的顶部。

有什么帮助吗?有没有其他更好的方法来完成所需的任务?

最佳答案

如果要保留顺序,则不应使用字典来保存最近的搜索,因为字典中的键/值对没有定义的顺序。

您应该将 recentSearchesStrings 数组本身存储在用户默认值中。要在删除重复项的同时将项目添加到数组中,您可以这样做

[self.recentSearchesStrings removeObject:searchText];
[self.recentSearchesStrings insertObject:searchText atIndex:0];

关于iphone - 在 NSUserDefaults 中保存最近的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12687017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com