iphone - 创建NSDictionary的NSDictionary

标签 iphone objective-c ios cocoa-touch nsdictionary

信不信由你,在问这个问题之前,我已经搜索了互联网。令人难以置信的是,我还没有找到一个很好的清晰示例,说明如何创建NSDictionaries 的 NSDictionary。

到目前为止,这是我的代码,但是它显示null。有任何想法吗?

// Here I am creating the dictionaries in the code until I start getting them from the server ;)
NSArray *keys = [NSArray arrayWithObjects:@"mission", @"target", @"distance",@"status", nil];


NSArray *objectsA = [NSArray arrayWithObjects:@"tiger", @"bill", @"5.4km", @"unknown", nil];
NSDictionary *tiger = [NSDictionary dictionaryWithObjects:objectsA 
                                                  forKeys:keys];

NSArray *objectsB = [NSArray arrayWithObjects:@"bull", @"roger", @"10.1km", @"you are dead",  nil];
NSDictionary *bull = [NSDictionary dictionaryWithObjects:objectsB 
                                                 forKeys:keys];

NSArray *objectsC = [NSArray arrayWithObjects:@"peacock", @"geoff", @"1.4km", @"target liquidated", nil];
NSDictionary *peacock = [NSDictionary dictionaryWithObjects:objectsC 
                                                    forKeys:keys];

// activeMissions = [NSArray arrayWithObjects:tiger, bull, peacock, nil];


[activeMissions setObject:tiger forKey:@"tiger"];
[activeMissions setObject:bull forKey:@"bull"];
[activeMissions setObject:peacock forKey:@"peacock"];

NSLog(@"active Missions %@", activeMissions);

最佳答案

您没有初始化activeMissions,这就是为什么NSLog语句输出null的原因(将消息发送到ObjC中的nil对象返回nil)。

在分配给activeMissions之前,先把它放进去:

NSMutableDictionary *activeMissions = [NSMutableDictionary dictionaryWithCapacity:3];

否则,如果您希望拥有一个不可更改的NSDictionary,则可以执行以下操作:
NSDictionary *activeMissions = [NSDictionary dictionaryWithObjects: [NSArray arrayWithObjects:tiger, bull, peacock, nil]
                                                  forKeys: [NSArray arrayWithObjects:@tiger, @"bull", @"peacock", nil]];

(请记住,该文件是自动发布的,您必须保留某种方式)。

关于iphone - 创建NSDictionary的NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737001/

相关文章:

iOS8 区域本地化(例如 pt-BR)?

iOS 使用沙盒帐户管理我的订阅

iphone - NSXMLParser问题带有“&”(Ampersand)字符

ios - 如何识别错误/警告是否是使用 swiftlint 规则创建的

iphone - PerformSelector After delay 不在后台模式下运行 - iPhone

ios - 以编程方式访问 Assets 目录

ios - Jenkins CI : How to trigger jenkins jobs based on different Xcode project configurations

iphone - 使用 Sprite Kit 粒子的 iOS 烟花爆炸

ios - 如何使用 AFNetworking 将 ipv4 地址转换为 ipv6?

iphone - 显示方向与设备方向不同的模态视图