添加和获取 NSMutableDictionary 的值不起作用

Adding and getting values of NSMutableDictionary not working

我正在尝试做一些复杂的事情,但是当我添加到一个 nsmutabledictionary 并尝试从中获取值时,当我尝试打印它时,它只是什么都不返回并且不打印任何内容 returns .我什至无法获得以下内容以在 ibaction 中打印任何内容,即使正在触发该操作。你能告诉我我做错了什么吗?谢谢!

我正在做的超级简化版本的示例代码:

NSMutableDictionary *test;
[test setObject:@"ValueIWantToGet" forKey:@"KeyIAmSetting"];
NSLog([test objectForKey:@"KeyIAmSetting"]); //Should print "ValueIWantToGet", right?

您的 test 变量未初始化。改为这样做:

NSMutableDictionary *test = [NSMutableDictionary dictionary];

NSMutableDictionary *test = [[NSMutableDictionary alloc] init];

在Objective-C中所有的对象都是通过指针来操作的。因此,变量名前面的声明中有星号。当您不为指针分配任何内容时,它的值保持未初始化状态,因此对它的任何引用都是未定义的行为。但是,在值恰好为 nil 的情况下,您不会看到崩溃,因为 Objective-C 允许将消息发送到 nil(它们没有任何效果)。

I'm making a property of an NSMutableDictionary, so how should I initialized it if it's a property?

应该在 class 的初始化程序中初始化属性,例如

-(instancetype)init {
    if (self = [super init]) {
        _test = [NSMutableDictionary dictionary];
    }
    return self;
}