有没有办法一次性从NSMutableDictionary中检索和删除对象?一种会崩溃以下内容的方法:
id myObject = [myMutableDict objectForKey:@"myKey"]
if(myObject)
{
[myMutableDict removeObjectForKey:@"myKey"];
...my code...
}
in to:
id myObject = [myMutableDict retrieveAndRemoveObjectForKey:@"myKey"];
if (myObject)
{
...my code...
}
我没有遇到任何瓶颈或任何事情,我没有描述过任何东西,但是有一个方法可以从一个可变字典中删除一个对象并一次性返回它,这样字典才有意义最终找不到“myObject”两次(我知道我不应该对NSMutableDictionary如何在内部工作做出任何假设。)
答案 0 :(得分:0)
您可以向.exe
添加类别并添加功能:
NSMutableDictionary
如果访问不正确意味着您需要保留-(id) retrieveAndRemoveObjectForKey:(NSString*)key {
id myObject = [self objectForKey:@"myKey"];
if(myObject)
{
[self removeObjectForKey:@"myKey"];
}
return myObject;
}
答案 1 :(得分:0)
根据建议,在NSMutablArray上写一个类别:
的NSMutableArray + Pop.h
@interface NSMutableArray (pop)
-(id) popObjectForKey:(NSString*)key;
@end
的NSMutableArray + Pop.m
@implementation NSMutableArray (pop)
-(id) popObjectForKey:(NSString*)key {
id result = self[key];
self[key] = nil;
return result;
}
@end