Znam nazwę ciągu właściwości obiektu. W jaki sposób chciałbym uzyskać i ustawić tę właściwość za pomocą ciągu?Uzyskiwanie dostępu do właściwości Objective-C dynamicznie za pomocą nazwy właściwości
Odpowiedz
Podczas @weichsel jest prawidłowa, nie ma lepszego sposobu.
Zastosowanie:
[anObject valueForKey: @"propertyName"];
i
[anObject setValue:value forKey:@"propertyName"];
Oczywiście @"propertyName"
może być NSString
, który składa się dynamicznie w czasie pracy.
Ta technika nazywa się Key Value Coding i ma fundamentalne znaczenie dla kakao.
Dlaczego to jest lepsze, ponieważ -valueForKey
zrobi to, co konieczne, aby "skrzynkowy", niezależnie od tego, jaki typ właściwości wraca do obiektu. Tak więc, jeśli właściwość jest typu int
, zwróci instancję NSNumber
zawierającą int.
Jest to o wiele łatwiejsze do czynienia z - performSelector
będzie tylko praca dla typów, które zdarzają aby pasowały do wartości wskaźnika w pamięci.
Należy pamiętać, że istnieje również -setValue:forKey:
.
@synthesize propertyName
automatyzuje generowanie metod getter i setter.
Kompilator generuje
- (id)propertyName;
- (void)setPropertyName;
Jeśli masz selektor jako NSString, można użyć performSelector:NSSelectorFromString
.
np .:
[object performSelector:NSSelectorFromString(@"propertyName") ...]
Będziesz musiał użyć 'performSelector: withObject:' w celu ustawienia właściwości. –
- 1. Uzyskiwanie dostępu do nazwy klasy i właściwości wewnątrz atrybutu
- 2. Dynamicznie wywołać właściwości według nazwy strun za pomocą VB.NET
- 3. Dynamicznie ignoruj właściwości za pomocą JacksonJson
- 4. Uzyskiwanie dostępu do pól formularza jako właściwości w widoku django
- 5. Uzyskiwanie dostępu do wartości właściwości obiektu w programie PowerShell
- 6. Prześlij nazwy właściwości wykresu do gephi za pomocą apoc.gephi.add()
- 7. ObjectiveC: gdzie zadeklarować prywatne właściwości instancji?
- 8. Rekursywnie uzyskiwanie właściwości i właściwości dziecka obiektu
- 9. dostępu do właściwości obiektu javascript bez wiedząc, że nazwa właściwości
- 10. Uzyskiwanie dostępu do właściwości w pliku prepareForSegue elementu UIViewController
- 11. Uzyskiwanie dostępu do zmiennych statycznych klasy modelu za pomocą refleksji
- 12. Właściwości zmiany nazwy Json.net
- 13. Uzyskiwanie dostępu do właściwości tary w instrukcjach Google javascript API
- 14. Uzyskiwanie dostępu do właściwości masterpage z poziomu usercontrol
- 15. Uzyskiwanie dostępu do właściwości statycznych w Sencha Touch
- 16. Uzyskiwanie dostępu do właściwości ukrytych przez __defineGetter __/__ defineSetter__ w JavaScript
- 17. Uzyskiwanie dostępu do właściwości konstruktora bez tworzenia nowej instancji
- 18. Modyfikatory odbicia i dostępu do właściwości
- 19. Dodawać dynamicznie atrybuty poziomu właściwości za pomocą TypeDescriptor dla PropertyGrid
- 20. Jak dynamicznie ustawić wartość właściwości instancji obiektu za pomocą odbicia?
- 21. Uzyskiwanie właściwości filmu za pomocą pythona i opencv
- 22. Jak zmienić nazwy właściwości podczas serializacji za pomocą Json.net?
- 23. Java uzyska wartość właściwości według nazwy właściwości
- 24. Uzyskiwanie atrybutu z przesłanianej właściwości za pomocą linq Wyrażenie
- 25. PropertyGrid - niestandardowe nazwy właściwości?
- 26. Dziedziczenie właściwości za pomocą modyfikatora dostępu w języku C#
- 27. JSP EL: dynamiczne tworzenie nazwy właściwości
- 28. Jak uzyskać kontrolę właściwości za pomocą "nazwy ciągu"?
- 29. Dostęp do właściwości pliku za pomocą PHP
- 30. ModelSerializer za pomocą właściwości modelu
Bardzo przydatne! Tego nie wiedziałem. –