8

OK, đây là điều khiến tôi cảm thấy khó chịu - hãy nói với tôi rằng tôi không mất trí!NSDictionary setValue:

Tôi tuyên bố:

NSMutableDictionary* generalSettingsDict; 

im .h tôi

tôi init:

generalSettingsDict = [[NSMutableDictionary alloc] initWithCapacity:5]; 

trong một viewWillAppear

tôi đặt:

[generalSettingsDict setValue:[NSNumber numberWithBool:control.on] 
         forkey:[NSNumber numberWithInt:control.tag]]; 

trong một phương pháp:

-(void)settingChanged:(UISwitch*)control forEvent:(UIEvent *)event 

Và tôi nhận "NSMutableDictionary có thể không đáp ứng với setValue: forKey:" và treo ứng dụng khi nó được chạy.

Xin giúp :(

+1

Bạn cũng có một lỗi chính tả: forKey :, not forkey :. Và đối với bản ghi, 'NSMutableDictionary' không hỗ trợ' setValue: forKey: ', nhưng tôi vẫn thích sử dụng' setObject: forKey: '. – Alex

Trả lời

25

A) forkey: nên forKey:. Viết hoa là quan trọng.

B) setValue:forKey: là phương pháp KVC. Nó có thể hoạt động như bạn mong đợi ở đây, nhưng phương pháp thích hợp để sử dụng cho NSMutableDictionary là setObject:forKey:

+0

Bạn cũng sẽ tìm thấy, ngay cả sau khi sửa tên phương thức, các phím KVC phải là chuỗi. Bạn phải sử dụng phương thức gốc NSMutableDictionary 'setObject: forKey:' để sử dụng các đối tượng tùy ý làm khóa. – Chuck

+0

Tôi nghĩ tôi cần ngủ một chút !!! Cảm ơn bạn! –

4

Bạn muốn setObject:forKey:. setValue:forKey: là một phần của giao thức mã hóa giá trị khóa. NSMutableDictionary cung cấp setObject:forKey:.