次の方法でアプローチを実現できます。
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>
さらに、このアイデアで何を達成したいのか、さらに洞察を提供していただければ幸いです。別の/より良い解決策があるかもしれません.
お役に立てれば!