我想在目标C中以集合(对象,键)的形式保存一些对象。我发现NSMutableDictionary
是合适的,但问题是我无法找回我想要的对象(最后一个)添加对象,首先添加对象...)。有没有更好的方法呢?
答案 0 :(得分:1)
对于键值对,NSDictionary或NSMutableDictionary是正确的解决方案。
任何给定键只有一个值,设置新值将覆盖旧值。
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
[myDictionary setValue:@"World" forKey:@"Hello"];
NSLog(@"Hello %@", [myDictionary objectForKey:@"Hello"]); // prints Hello World
[myDictionary setValue:@"StackOverflow" forKey:@"Hello"];
NSLog(@"Hello %@", [myDictionary objectForKey:@"Hello"]); // prints Hello StackOverflow
[myDictionary setValue:nil forKey:@"Hello"];
NSLog(@"Hello %@", [myDictionary objectForKey:@"Hello"]); // prints Hello (null)
答案 1 :(得分:1)
您可以使用添加到Dictionary:
中的此对象键来取回对象NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"A" forKey:@"a"];
NSString *strA = [dict objectForKey:@"a"];
将您的密钥放到NSMutableArray将帮助您获得最后/第一个密钥。
希望有所帮助!
答案 2 :(得分:0)
字典用于在拥有密钥时访问数据。它们不是订购的容器。
如果您需要根据何时将数据添加到容器来检索数据,则需要LIFO(也称为堆栈),FIFO(也称为队列)或deque(也称为双端队列)类型的容器。你可以在维基百科上阅读它们作为入门者,但如果你想成为一名程序员,我建议你至少阅读一本不错的算法和数据结构书。
AFAIK没有在cocoa中实现这些抽象的预定义类,但它们对数组都很容易。 NSArray
有lastObject
和objectAtIndex:
方法,NSMutableArray
也有addObject:
,insertObject:atIndex:
,removeLastObject
和removeObjectAtIndex:
基本上是LIFO / FIFO / deque访问原语的方法(假设在这些方法需要索引时使用0)。
答案 3 :(得分:0)
如果您想获取最后添加的对象或索引对象,则NSMutablearray是最佳方法。 首先添加的对象是对象索引0,最后添加的对象是[count-1] index