我正在尝试获取实体的所有属性,然后确定它们的类型 - 我知道我可以在这一行上做点什么:
if(![[thisAttribute attributeValueClassName] isKindOfClass:[NSString class]]) {
但是如何检查BOOL,Float或Integer?
到目前为止,这是我的代码:
//get the attributes for this entity - we need to parse the dictionary of data we want to store and convert its contents from NSStrings to whatever type the entity requires
NSEntityDescription* entity = [NSEntityDescription entityForName:strEntityName inManagedObjectContext:myMOC];
NSDictionary* dictAttributes = [entity attributesByName];
for(NSString* strThisKey in dictAttributes) {
NSAttributeDescription* thisAttribute = [dictAttributes objectForKey:strThisKey];
NSString* strAttributeType = [thisAttribute attributeValueClassName];
//look for a match in the data keys (the dict we passed) with the entity keys
for(NSString* strDataKey in dictDataToStore) {
//found
if ([strDataKey isEqualToString:strThisKey]) {
if(![strAttributeType isEqualToString:@"NSString"]) {
//check for whatever else (@"NSDate", @"NSNumber", etc.)
}
}
}
}
好吧,我误解了从NSAttributeDescription返回给我的内容,我编辑了代码,基本上回答了我的问题。希望这有助于其他人。
答案 0 :(得分:5)
您可以使用NSEntityDescription
和NSPropertyDescription
API来确定建模实体的类型。
我将枚举NSAttributeDescription
的{{1}}常量
NSAttributeType