首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从带有属性的NSObject转换为NSDictionary的Obj-C简单方法?

从带有属性的NSObject转换为NSDictionary的Obj-C简单方法:

以下是一个简单的Obj-C方法,可以将带有属性的NSObject对象转换为NSDictionary对象。

代码语言:objc
复制
- (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;
}

使用方法:

代码语言:objc
复制
// 假设有一个名为MyObject的NSObject子类,带有属性name和age
MyObject *myObject = [[MyObject alloc] init];
myObject.name = @"John";
myObject.age = 30;

NSDictionary *dictionary = [self dictionaryWithObject:myObject];
NSLog(@"%@", dictionary);

输出结果:

代码语言:txt
复制
{
    age = 30;
    name = John;
}

这个方法会遍历对象的所有属性,将属性名作为键,属性值作为值,存储到一个NSMutableDictionary中。最后返回这个字典。

注意:这个方法仅适用于具有属性的NSObject对象,不适用于其他类型的对象。在使用时,请确保传递的对象具有属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券