将收藏夹保存到 NSUserDefaults
Saving Favorites to NSUserDefaults
我有一个显示来自网站的 posts 的应用程序。我正在尝试为用户添加使用 NSUserDefaults 保存他们最喜欢的 post 的功能。我需要为用户想要保存为收藏的每个 post 保存标题和 url,这样我就可以在 table 视图中显示标题,然后允许用户 select 一个收藏夹,然后打开一个带有相应 url 的 Web 视图。我想我会在字典中保存 post 标题和 url,然后从字典数组中填充 table 视图。我的问题是如何在 NSUserDefaults 中保存字典而不覆盖以前保存到用户默认值的收藏夹?例如,用户将 post 保存到收藏夹字典,然后保存到用户默认值。然后他们将另一个 post 保存到字典中,但该字典替换了用户默认值中已有的字典。
这是我试过的。收藏夹 table 视图仅显示最后保存的一个。
- (void)addFavorite {
NSMutableArray *favoritesArray = [NSMutableArray array];
NSDictionary *favoriteDictionary = [NSDictionary dictionaryWithObjectsAndKeys:self.postTitle, @"title", self.postUrlString, @"url", nil];
[favoritesArray addObject:favoriteDictionary];
[[NSUserDefaults standardUserDefaults] setObject:favoritesArray forKey:@"favorites"];
[[NSUserDefaults standardUserDefaults] synchronize];
你会想要这样的东西(这是 Swift 1.2)
func getPosts() -> [[String:String]]? {
return NSUserDefaults.standardUserDefaults().arrayForKey("posts") as? [[String:String]]
}
func savePost(dictionary : [String:String]) {
var newPosts : [[String:String]]
if let existingPosts = getPosts() {
newPosts = existingPosts;
newPosts.append(dictionary);
} else {
newPosts = [dictionary]
}
NSUserDefaults.standardUserDefaults().setObject(newPosts, forKey: "posts");
}
像这样尝试一下
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *favoritesLoaded = [defaults objectForKey:@"favorites"];
NSDictionary *fav = [NSDictionary dictionaryWithObjectsAndKeys:
object.title, @"title",
object.url, @"url",
nil];
NSMutableArray *favorites = [NSMutableArray array];
if (favoritesLoaded) {
favorites = [[NSMutableArray alloc] initWithArray:favoritesLoaded];
} else {
favorites = [[NSMutableArray alloc] init];
}
[favorites addObject:fav];
[defaults setObject:favorites forKey:@"favorites"];
[defaults synchronize];
我有一个显示来自网站的 posts 的应用程序。我正在尝试为用户添加使用 NSUserDefaults 保存他们最喜欢的 post 的功能。我需要为用户想要保存为收藏的每个 post 保存标题和 url,这样我就可以在 table 视图中显示标题,然后允许用户 select 一个收藏夹,然后打开一个带有相应 url 的 Web 视图。我想我会在字典中保存 post 标题和 url,然后从字典数组中填充 table 视图。我的问题是如何在 NSUserDefaults 中保存字典而不覆盖以前保存到用户默认值的收藏夹?例如,用户将 post 保存到收藏夹字典,然后保存到用户默认值。然后他们将另一个 post 保存到字典中,但该字典替换了用户默认值中已有的字典。
这是我试过的。收藏夹 table 视图仅显示最后保存的一个。
- (void)addFavorite {
NSMutableArray *favoritesArray = [NSMutableArray array];
NSDictionary *favoriteDictionary = [NSDictionary dictionaryWithObjectsAndKeys:self.postTitle, @"title", self.postUrlString, @"url", nil];
[favoritesArray addObject:favoriteDictionary];
[[NSUserDefaults standardUserDefaults] setObject:favoritesArray forKey:@"favorites"];
[[NSUserDefaults standardUserDefaults] synchronize];
你会想要这样的东西(这是 Swift 1.2)
func getPosts() -> [[String:String]]? {
return NSUserDefaults.standardUserDefaults().arrayForKey("posts") as? [[String:String]]
}
func savePost(dictionary : [String:String]) {
var newPosts : [[String:String]]
if let existingPosts = getPosts() {
newPosts = existingPosts;
newPosts.append(dictionary);
} else {
newPosts = [dictionary]
}
NSUserDefaults.standardUserDefaults().setObject(newPosts, forKey: "posts");
}
像这样尝试一下
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *favoritesLoaded = [defaults objectForKey:@"favorites"];
NSDictionary *fav = [NSDictionary dictionaryWithObjectsAndKeys:
object.title, @"title",
object.url, @"url",
nil];
NSMutableArray *favorites = [NSMutableArray array];
if (favoritesLoaded) {
favorites = [[NSMutableArray alloc] initWithArray:favoritesLoaded];
} else {
favorites = [[NSMutableArray alloc] init];
}
[favorites addObject:fav];
[defaults setObject:favorites forKey:@"favorites"];
[defaults synchronize];