从NSUserdefaults中删除NSDictionary

Seb*_*b78 0 objective-c nsuserdefaults uitableview ios

我想删除存储在NSUserdefaults中的NSDictionary.我试过这个:

[NSUserDefaults removeObjectForKey:@"bookmarks"];
Run Code Online (Sandbox Code Playgroud)

但是,我的所有收藏都被删除了

如何删除一个喜欢的单个?

我在这里找到了同样的问题 - 通过tableview单元删除NSUserDefault的对象

谢谢大家

tro*_*foe 6

获取书签字典,创建可变副本,以便您可以修改它:

NSMutableDictionary *bookmarks = [[userDefaults objectForKey:@"bookmarks"] mutableCopy];
Run Code Online (Sandbox Code Playgroud)

删除你想要的那个:

[bookmarks removeObjectForKey:@"Bookmark be gone"];
Run Code Online (Sandbox Code Playgroud)

把书签放回去:

[userDefaults setObject:bookmarks forKey:@"bookmarks"];
Run Code Online (Sandbox Code Playgroud)

并同步:

[userDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)

编辑在OP的评论之后,听起来它可能是在数组中,而不是字典.原理是一样的:

获取书签数组,创建可变副本,以便您可以修改它:

NSMutableArray *bookmarks = [[userDefaults objectForKey:@"bookmarks"] mutableCopy];
Run Code Online (Sandbox Code Playgroud)

删除你想要的那个(找到你可能需要迭代数组的对象的索引.看到这个问题):

[bookmarks removeObjectAtIndex:5];
Run Code Online (Sandbox Code Playgroud)

把书签放回去:

[userDefaults setObject:bookmarks forKey:@"bookmarks"];
Run Code Online (Sandbox Code Playgroud)

并同步:

[userDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)