Cả hai phương pháp này là một phần của Key-Value Coding và không nên thường được sử dụng để truy cập phần tử trong từ điển. Chúng chỉ hoạt động trên các loại khóa NSString
và yêu cầu cú pháp cụ thể.
Sự khác biệt giữa cả hai trong số đó là việc chỉ định khóa (đơn) sẽ chỉ tìm kiếm mục đó.
Chỉ định một đường dẫn chính ngược lại theo đường dẫn qua các đối tượng. Nếu bạn có từ điển từ điển, bạn có thể tìm kiếm một phần tử ở cấp độ thứ hai bằng cách sử dụng một đường dẫn chính như "key1.key2"
.
Nếu bạn chỉ muốn truy cập các phần tử trong từ điển, bạn nên sử dụng objectForKey:
và setObject:forKey:
.
Sửa để trả lời tại sao valueForKey:
không nên được sử dụng:
valueForKey:
chỉ hoạt động cho các phím chuỗi. Từ điển có thể sử dụng các đối tượng khác cho khóa.
valueForKey:
Xử lý các phím bắt đầu bằng ký tự "@" khác nhau. Bạn không thể truy cập các yếu tố có khóa bắt đầu bằng @
.
- Quan trọng nhất: Bằng cách sử dụng
valueForKey:
bạn đang nói: "Tôi đang sử dụng KVC". Nên có một lý do để làm điều này. Khi sử dụng objectForKey:
, bạn chỉ truy cập các phần tử trong từ điển thông qua API tự nhiên, dự định.
Nguồn
2012-07-11 13:44:49
Chỉ khác nếu bạn đang sử dụng một từ điển phức tạp hơn (với nhiều cấp độ). Lý do của bạn trông giống nhau là một keypath với chỉ một điều (không có '.' chỉ ra một thành phần đường dẫn bổ sung) thực sự chỉ là một khóa. – Dustin