【发布时间】:2016-08-12 10:38:37
【问题描述】:
有没有办法一次性从 NSMutableDictionary 中检索和删除对象?一种会折叠以下内容的方法:
id myObject = [myMutableDict objectForKey:@"myKey"]
if(myObject)
{
[myMutableDict removeObjectForKey:@"myKey"];
...my code...
}
到:
id myObject = [myMutableDict retrieveAndRemoveObjectForKey:@"myKey"];
if (myObject)
{
...my code...
}
我没有遇到任何瓶颈或任何问题,也没有分析任何内容,但是有一种方法可以从可变字典中删除对象并一次性返回它,这样字典才有意义最终不会找到“myObject”两次(我知道我不应该对 NSMutableDictionary 内部的工作方式做出任何假设)。
【问题讨论】:
-
“有意义”?不,它没有。我还没有在任何其他语言运行时的任何集合类中看到这样的方法。但是,如果您想自己写一个,那么创建一个类别是继续的方法。
-
“我还没有在任何其他语言运行时的任何集合类中看到这样的方法。”这几乎不是它是否有意义的论据。在其他语言中,您可以找到一个元素,获取一个迭代器,然后在恒定时间内使用迭代器删除对象。在这里,NSMutableDictionary 可能必须在内部查找“myObject”两次,每次调用一次,所以一个同时执行这两个操作的方法非常有意义。无论如何,如果没有内置任何东西,那么我想答案是否定的。
-
Python中至少有这样的方法:docs.python.org/3/library/stdtypes.html#dict.pop
-
@Droppy 那么 pop 呢?在堆栈中弹出(检索和删除)最后一个元素是很常见的......为什么不在字典中?我有点明白需要。 :)
-
是的,有一个。但这肯定不常见,而且对它的需求不仅仅是“有意义”,尤其是考虑到字典无论如何都倾向于快速查找。
标签: ios objective-c nsmutabledictionary