Chr*_*ner 4 iphone objective-c
我有以下类定义.
Contact.h
#import <CoreData/CoreData.h>
@interface Contact : NSManagedObject
{
}
@property (nonatomic, retain) NSString * City;
@property (nonatomic, retain) NSDate * LastUpdated;
@property (nonatomic, retain) NSString * Country;
@property (nonatomic, retain) NSString * Email;
@property (nonatomic, retain) NSNumber * Id;
@property (nonatomic, retain) NSString * ContactNotes;
@property (nonatomic, retain) NSString * State;
@property (nonatomic, retain) NSString * StreetAddress2;
@property (nonatomic, retain) NSDate * DateCreated;
@property (nonatomic, retain) NSString * FirstName;
@property (nonatomic, retain) NSString * Phone1;
@property (nonatomic, retain) NSString * PostalCode;
@property (nonatomic, retain) NSString * Website;
@property (nonatomic, retain) NSString * StreetAddress1;
@property (nonatomic, retain) NSString * LastName;
@end
Run Code Online (Sandbox Code Playgroud)
是否有可能获得的NSString对象数组与所有的名字属性?
数组看起来像这样......
[@"City", @"LastUpdated", @"Country", .... ]
Run Code Online (Sandbox Code Playgroud)
解决方案(根据评论更新)
感谢Dave的回答,我能够编写以下方法来使用
- (NSMutableArray *) propertyNames: (Class) class {
NSMutableArray *propertyNames = [[NSMutableArray alloc] init];
unsigned int propertyCount = 0;
objc_property_t *properties = class_copyPropertyList(class, &propertyCount);
for (unsigned int i = 0; i < propertyCount; ++i) {
objc_property_t property = properties[i];
const char * name = property_getName(property);
[propertyNames addObject:[NSString stringWithUTF8String:name]];
}
free(properties);
return [propertyNames autorelease];
}
Run Code Online (Sandbox Code Playgroud)
是的!干得好:
#import <objc/runtime.h>
//somewhere:
unsigned int propertyCount = 0;
objc_property_t * properties = class_copyPropertyList([self class], &propertyCount);
NSMutableArray * propertyNames = [NSMutableArray array];
for (unsigned int i = 0; i < propertyCount; ++i) {
objc_property_t property = properties[i];
const char * name = property_getName(property);
[propertyNames addObject:[NSString stringWithUTF8String:name]];
}
free(properties);
NSLog(@"Names: %@", propertyNames);
Run Code Online (Sandbox Code Playgroud)
警告:在浏览器中输入代码.
| 归档时间: |
|
| 查看次数: |
3271 次 |
| 最近记录: |