Skip to content

Instantly share code, notes, and snippets.

@andrewsardone
Created August 27, 2010 15:58
Show Gist options
  • Save andrewsardone/553633 to your computer and use it in GitHub Desktop.
Save andrewsardone/553633 to your computer and use it in GitHub Desktop.
//
// NSObject+PropertyListing.h
// PropertyFun
//
// Created by Andrew Sardone on 8/27/10.
//
#import <Foundation/Foundation.h>
@interface NSObject (PropertyListing)
// aps suffix to avoid namespace collsion
// ...for Andrew Paul Sardone
- (NSDictionary *)properties_aps;
@end
//
// NSObject+PropertyListing.m
// PropertyFun
//
// Created by Andrew Sardone on 8/27/10.
//
#import "NSObject+PropertyListing.h"
#import <objc/runtime.h>
@implementation NSObject (PropertyListing)
- (NSDictionary *)properties_aps {
NSMutableDictionary *props = [NSMutableDictionary dictionary];
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList([self class], &outCount);
for (i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
NSString *propertyName = [[[NSString alloc] initWithCString:property_getName(property)] autorelease];
id propertyValue = [self valueForKey:(NSString *)propertyName];
if (propertyValue) [props setObject:propertyValue forKey:propertyName];
}
free(properties);
return props;
}
@end
@maurimendoza
Copy link

You really made my day, thanks so much for this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment