添加和获取 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;
}
我正在尝试做一些复杂的事情,但是当我添加到一个 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;
}