从带有属性的NSObject转换为NSDictionary的Obj-C简单方法:
以下是一个简单的Obj-C方法,可以将带有属性的NSObject对象转换为NSDictionary对象。
- (NSDictionary *)dictionaryWithObject:(NSObject *)object {
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([object class], &outCount);
NSMutableDictionary *result = [NSMutableDictionary dictionaryWithCapacity:outCount];
for (i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
NSString *propertyName = [NSString stringWithUTF8String:property_getName(property)];
id propertyValue = [object valueForKey:propertyName];
if (propertyValue) {
[result setObject:propertyValue forKey:propertyName];
}
}
free(properties);
return result;
}
使用方法:
// 假设有一个名为MyObject的NSObject子类,带有属性name和age
MyObject *myObject = [[MyObject alloc] init];
myObject.name = @"John";
myObject.age = 30;
NSDictionary *dictionary = [self dictionaryWithObject:myObject];
NSLog(@"%@", dictionary);
输出结果:
{
age = 30;
name = John;
}
这个方法会遍历对象的所有属性,将属性名作为键,属性值作为值,存储到一个NSMutableDictionary中。最后返回这个字典。
注意:这个方法仅适用于具有属性的NSObject对象,不适用于其他类型的对象。在使用时,请确保传递的对象具有属性。
领取专属 10元无门槛券
手把手带您无忧上云