1

我想在目标C中以集合(对象,键)的形式保存一些对象。我发现NSMutableDictionary很合适,但问题是我无法取回我想要的对象(最后添加的对象,第一个添加的对象.. .)。有更好的方法吗?

4

4 回答 4

1

您可以使用您添加到 Dictionary 的对象的键来取回您的对象:

NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:@"A" forKey:@"a"];

NSString *strA = [dict objectForKey:@"a"];

将您的密钥放入 NSMutableArray 将帮助您获得最后一个/第一个密钥。

希望有帮助!

于 2012-08-23T01:51:38.100 回答
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)
于 2012-08-23T01:50:51.580 回答
0

字典用于在您拥有密钥时访问数据。它们不是有序容器。

如果您需要根据将数据添加到容器的时间来检索数据,则需要 LIFO(又名堆栈)、FIFO(又名队列)或 deque(又名双端队列)类型的容器。您可以先在 wikipedia 上阅读它们,但如果您想成为一名程序员,我建议您至少阅读一本像样的算法和数据结构书籍。

AFAIK 没有预定义的类可以在可可中实现这些抽象,但它们都很容易用数组来完成。NSArrayhaslastObjectobjectAtIndex:方法,NSMutableArray还有addObject:,和方法insertObject:atIndex:,它们基本上是 LIFO/FIFO/deque 访问的原语(假设当这些方法需要索引时使用 0 )。removeLastObjectremoveObjectAtIndex:

于 2012-08-23T01:55:49.253 回答
0

如果您想获取最后添加的对象或按索引获取对象,NSMutablearray 是最好的方法。首先添加的对象位于对象索引 0 处,最后添加的对象位于 [count-1] 索引处

于 2012-08-23T02:32:22.497 回答