Tại sao tôi không thể quan sát thuộc tính editing
của phiên bản UITableViewController
?Quan sát thuộc tính chỉnh sửa của UITableViewController
Tôi đang sử dụng đoạn mã sau:
[self addObserver:self
forKeyPath:@"editing"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
context:NULL];
Và đã thực hiện phương pháp này:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
... nhưng phương pháp observeValueForKeyPath
không bao giờ được gọi khi giá trị này thay đổi.
Theo Ensuring KVC Compliance phần của Apple:
Đối với tài sản mà là một thuộc tính hoặc một mối quan hệ to-one, điều này đòi hỏi rằng lớp học của bạn:
- Thực hiện một phương thức có tên
-<key>
,-is<Key>
hoặc có biến mẫu<key>
hoặc_<key>
.- Nếu thuộc tính có thể thay đổi, thì nó cũng phải triển khai
-set<Key>:
.- Việc triển khai phương pháp
-set<Key>:
của bạn không được thực hiện xác thực.- Lớp học của bạn nên triển khai
-validate<Key>:error:
nếu xác thực phù hợp với khóa.
Các tài liệu cho editing
tài sản, nói rằng nó được định nghĩa là:
@property(nonatomic, getter=isEditing) BOOL editing
Kể từ khách sạn này không thể thay đổi, điểm viên đạn duy nhất nó phải phù hợp với là người đầu tiên (tức là rằng có một phương pháp -is<Key>
được định nghĩa, ví dụ). Bạn có thể thấy rằng nó phù hợp với điều này bằng cách nhìn vào tuyên bố của tài sản, và nhận thấy rằng có một phương pháp isEditing
được xác định. Do đó, nó phải tuân thủ Tuân thủ giá trị khóa. Sao nó không hoạt động?
Chỉ vì tò mò, tại sao bạn đang cố gắng quan sát thuộc tính, trái với việc thực hiện 'setEditing: animated:'? –
@Gordon: để gỡ lỗi các lý do liên quan đến phương pháp đó. – Senseful