0

テキストフィールドから名前と電話番号を取得していますが、ここまではすべて問題ありません。これらのデータを追加しようとしても、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'のローカル宣言はインスタンス変数を非表示にします

4

1 に答える 1

1

ほとんどの場合、辞書を初期化していない可能性があります。

viewDidLoadこれをメソッドに追加します。

self.contacts = [NSMutableDictionary new];

最後の警告に関しては、プロパティが宣言されている場合、同じ名前でiVarが自動的に作成されますが、前に_が追加されます。IEがname宣言されたプロパティとしてある場合、呼び出されるインスタンス変数_nameが作成されます。メソッドを作成したときはaddToDictionary:、同じ名前を使用しました。これにより、iVarにアクセスできなくなり、警告が表示されます。警告を取り除くには、_nameand_phoneを他の何か(newNameandなどnewPhone)に置き換えます。

于 2012-12-30T07:49:10.887 に答える