尝试将NSString添加到NSMutableDictionary不起作用

时间:2012-12-30 07:45:02

标签: objective-c nsmutabledictionary

我从文本字段中获取姓名和电话号码,直到这里一切正常。 当我尝试将这些数据添加到我的NSMutableDictionary时,没有任何反应。


ViewController.h

@property(strong,nonatomic) NSMutableDictionary *contacts;

ViewController.m

- (IBAction)btnAdd:(id)sender {
    self.userName = self.name.text;
    self.userPhoneNumber = self.phoneNumber.text;
    [self addToDictionary:self.userName :self.userPhoneNumber];
    NSLog(@"ADDED: Key = %@, Value = %@", self.userName, self.userPhoneNumber);
    [self clearTextFields];
}

- (void)addToDictionary: (NSString*) _name: (NSString*) _phone{
    [self.contacts setObject:_name forKey:_phone];
}

错误消息

  

'_name'的本地声明隐藏了实例变量

1 个答案:

答案 0 :(得分:1)

您很可能没有初始化词典。

将此添加到您的viewDidLoad方法:

self.contacts = [NSMutableDictionary new];

就最后的警告而言,当你有一个声明的属性时,会自动为你创建一个具有相同名称的iVar,但之前添加了_。 I.E.如果您将name作为声明的属性,则会为您创建一个名为_name的实例变量。在创建addToDictionary:方法时,使用了相同的名称。这可以防止您访问iVar,因此它会向您发出警告。要删除警告,请将_name_phone替换为其他内容(例如newNamenewPhone)。