Tôi biết tên chuỗi của thuộc tính của đối tượng. Làm thế nào tôi sẽ đi về nhận và thiết lập tài sản đó bằng cách sử dụng chuỗi?Thuộc tính Truy cập-C động sử dụng tên của thuộc tính
Trả lời
Trong khi @weichsel là đúng, có một cách tốt hơn.
Sử dụng:
[anObject valueForKey: @"propertyName"];
và
[anObject setValue:value forKey:@"propertyName"];
Rõ ràng, @"propertyName"
có thể là một NSString
đó là tự động sáng tác trong thời gian chạy.
Kỹ thuật này được gọi là Key Value Coding và là cơ bản đối với Cocoa.
Tại sao điều này là tốt hơn là vì -valueForKey
sẽ làm những gì cần thiết để "hộp" bất kỳ loại tài sản nào trả về một đối tượng. Do đó, nếu thuộc tính là loại int
, nó sẽ trả về một thể hiện NSNumber
chứa int.
Đây là dễ dàng hơn nhiều để đối phó với - performSelector
sẽ chỉ làm việc với nhiều loại mà xảy ra để phù hợp với giá trị của một con trỏ bộ nhớ.
Lưu ý rằng cũng có -setValue:forKey:
.
@synthesize propertyName
tự động tạo các phương thức getter và setter.
Trình biên dịch tạo ra
- (id)propertyName;
- (void)setPropertyName;
Nếu bạn có một selector như NSString, bạn có thể sử dụng performSelector:NSSelectorFromString
.
ví dụ .:
[object performSelector:NSSelectorFromString(@"propertyName") ...]
Bạn sẽ phải sử dụng 'performSelector: withObject:' để đặt thuộc tính. –
- 1. C# truy cập các giá trị thuộc tính động theo tên thuộc tính
- 2. truy cập thuộc tính đối tượng của một javascript mà không biết rằng tên thuộc tính
- 3. Tên thuộc tính động trong VBA
- 4. JSP EL: tạo động của tên thuộc tính
- 5. Thuộc tính mới của thuộc tính ARC
- 6. .NET: Nhận tên thuộc tính trong thuộc tính
- 7. isset() với tên thuộc tính động
- 8. Truy cập thuộc tính của DbSet theo tên
- 9. Validation sử dụng thuộc tính
- 10. sử dụng đúng của C thuộc tính #
- 11. Buộc sử dụng thuộc tính trên thuộc tính, nếu chúng đã có thuộc tính khác
- 12. Có cách nào để sử dụng thiết lập kiểu cho thuộc tính của thuộc tính không?
- 13. Sử dụng "chuyển đổi sang thuộc tính tự động" trên nhiều thuộc tính cùng một lúc
- 14. thuộc tính đối tượng truy cập trong groovy sử dụng []
- 15. AllowMultiple không hoạt động với Thuộc tính Thuộc tính?
- 16. Cách lấy giá trị của thuộc tính của đối tượng theo tên thuộc tính trong PowerShell?
- 17. Cách lấy tên thuộc tính khi sử dụng lợi nhuận
- 18. Có thể truy cập thuộc tính con "DebuggerDisplay" của thuộc tính không?
- 19. Truy cập thuộc tính IFrame tên miền chéo từ JavaScript
- 20. Net Nhận tên thuộc tính
- 21. Sử dụng các thuộc tính ... INotifyPropertyChanged
- 22. Sử dụng tên mục enum như tham số thuộc tính
- 23. Nhận thuộc tính động từ Cài đặt
- 24. Tên thuộc tính jQuery chứa
- 25. hạn chế loại thuộc tính của thuộc tính tùy chỉnh
- 26. Tính di động của các thuộc tính Native C++
- 27. Truy vấn XDocument với thuộc tính xmlns (không gian tên)
- 28. Biểu thức JSP và Tên thuộc tính động
- 29. Truy xuất thuộc tính tên chế độ xem trong android?
- 30. Đặt thuộc tính DllImport động
Rất tiện dụng! Không biết điều đó. –