2013-05-21 58 views
2
ABC *abc=[ABC new]; 
id property=abc.property; 

獲得財產,但:從ID類

id ClassName=NSClassFromString(ABC); 
id instance=[ClassName new]; 

id property=???????; 

我不能使用instance.property,因爲它是ID類型。

我想從(id)類型的類獲得一個已知的屬性。

我嘗試使用:

[aInstanse propertyForKey:<#(NSString *)#>]; 
[aInstanse propertyNamed:<#(NSString *)#>]; 

但程序崩潰......

你能幫助我,謝謝。

+1

你能發佈崩潰日誌嗎? – Stunner

回答

7

有很多方法

,如果你知道在編譯的類型,你可以將它轉換時間

id property=((MyClass *)instance).myProperty; 
((MyClass *)instance).myProperty = property; 

或不使用點語法

id property=[instance myProperty]; 
[instance setMyProperty:property]; 

或使用valueForKey:

id property=[instance valueForKey:@"myProperty"]; 
[instance setValue:property forKey:@"myProperty"]; 
+0

:)謝謝。問題已解決 – user1661728

0

你可以只使用標準的getter和setter方法,它的默認性能已經和這@synthesize將創建:

[instance property]; 
[instance setProperty:value]; 
0

如果你確定你的類有一些屬性,你知道這個屬性的名稱,就可以使一個接口來調用它。 當然,你必須將你的對象投射到這個類的一個對象上!

祝你好運!