您可以通過以下方法實現你的方法:
unsigned int count;
objc_property_t *properties = class_copyPropertyList([CoreDataObject class], &count);
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:16];
for(int i = 0; i < count; i++) {
objc_property_t property = properties[i];
NSString *name = [NSString stringWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
id obj = [coreDataObjectInstance valueForKey:name];
if (obj) {
// Skip properties with nil values (optionally you can use: [dictionary setObject:((obj == nil) ? [NSNull null] : obj) forKey:name]; without any if-statement)
[dictionary setObject:obj forKey:name];
}
}
free(properties);
「CoreDataObject」爲核心的數據對象,你想轉換成的NSDictionary而「coreDataObjectInstance」這是核心數據對象的實例。 請記住,你必須:
#include <objc/runtime.h>
此外,這將是巨大的,如果你可以給我們一些更多的見解,你想實現這個想法是什麼,也許有不同的/更好的解決方案。
希望這會有所幫助!
您能給你爲什麼想這樣做更詳細的,有可能是一個更好的辦法實現你想要的。同時,看看NSEntityDescription和attributesByName。 – jrturton 2012-04-26 21:23:17
看看[這篇文章](http://vladimir.zardina.org/2010/03/serializing-archivingunarchiving-an-nsmanagedobject-graph/)。它也涵蓋了你的任何關係。 – Alladinian 2012-04-26 21:23:21