- (NSString *)serializeObject:(id)theObject
{
NSString *className = NSStringFromClass([theObject class]);
const char *cClassName = [className UTF8String];
id theClass = objc_getClass(cClassName);
unsigned int outCount, i;
// Method *methods = class_copyMethodList(theClass, &outCount);
// for (i = 0; i < outCount; i++) {
//
//
// Method method = methods[i];
//
// SEL sel = method_getName(method);
//
// NSLog(@"%@",NSStringFromSelector(sel));
//
//
// }
objc_property_t *properties = class_copyPropertyList(theClass, &outCount);
NSMutableArray *propertyNames = [[NSMutableArray alloc] initWithCapacity:1];
for (i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
NSString *propertyNameString = [[NSString alloc] initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
[propertyNames addObject:propertyNameString];
// [propertyNameString release];
NSLog(@"%s %s\n", property_getName(property), property_getAttributes(property));
}
NSMutableDictionary *finalDict = [[NSMutableDictionary alloc] initWithCapacity:1];
for(NSString *key in propertyNames)
{
SEL selector = NSSelectorFromString(key);
id value = [theObject performSelector:selector];
if (value == nil)
{
value = [NSNull null];
}
[finalDict setObject:value forKey:key];
}
// [propertyNames release];
// NSString *retString = [[CJSONSerializer serializer] serializeDictionary:finalDict];
NSString *retString = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:finalDict options:0 error:nil] encoding:NSUTF8StringEncoding];
// [finalDict release];
return retString;
}iOS反射机制,获取方法名和描述属性
最新推荐文章于 2020-08-20 16:22:46 发布
本文介绍了一个Objective-C中实现的对象序列化方法。该方法通过获取对象的所有属性名称,并使用这些属性构建一个字典,最终将字典转换为JSON字符串来完成序列化过程。
574

被折叠的 条评论
为什么被折叠?



