我遇到了一個問題,即獲取類型爲id的對象。我知道它的基類型是一個NSManagedObject,但實際上它的實際類型(名稱,電子郵件等)的自定義屬性是我真正需要的。從長遠來看,我試圖讓一個方法,將我的自定義NSManagedObjects到NSDictionaries。也許我下去一般,但走錯了路....基於NSString類名鑄造對象的客觀c類型
如果我有像
-(void)someMethod:(id)obj{
...
Class someClass = NSClassFromString([[obj class] description]);
...
我可以從獲取類,但後來我真的不能弄清楚如何施展我的對象作爲那個班級。
理想,這將是該代碼
someClass* myObject = (someClass*)obj;
NSArray *keys = [[[myObject entity] attributesByName] allKeys];
NSDictionary *dict = [myObject dictionaryWithValuesForKeys:keys];
//do something with dict
...
的接下來的幾行,但我無法弄清楚如何獲得類型SomeClass的對象。我所看到的,你可以使用NSClassFromString對象的頁頭初始化調用,比如
id someObject = [[className alloc] init];
但不會出現這種情況工作,因爲我已經在我需要傳遞的對象。任何想法/批評?我真的想盡量避免所有我的項目,如果陳述的廢話加載,但它可能是現在最快的方式...
我想問一個更好,更簡潔的問題(sans代碼示例)的方法是:是否有動態的方式來傳入NSManagedObject作爲其子類的自定義對象,並從中獲取所有字段的NSDictionary我的自定義對象? – AtomRiot
爲什麼你覺得你需要投入一些動態類型? Objective-C是動態類型的,與編譯器語法檢查器不同(與編譯器語法檢查器不同),當您撥打電話時會使用什麼類型的指針 - 哎呀,請原諒 - 「發送消息」。 –