我正在从nsdictionaries创建各种nsmanagedobjects,当我迭代对象的属性时,我从字典中分配相应的值。
目前我检查这样的类型:
if ([attributeValue isKindOfClass:[NSString class]]) {
...
}
现在的问题是,一旦创建了托管对象,所有(例如字符串)值都不会响应比较类。显然他们也不是。我想念除了nsnumber以外的一切。
[[attributeValue class] description]
对于除了未设置值的nsnumbers之外的所有内容都是空的。
有没有办法访问属性本身的类型,就像在类头中定义的那样,而不是使用(仍未设置)值?
答案 0 :(得分:1)
模型中的每个NSManagedObject都有一个对应的NSEntityDescription。您可以使用实体说明获取attributes和relationships的列表。这些将是NSAttributeDescription或NSRelationshipDescription s,其中包含您需要的信息。
答案 1 :(得分:0)
我知道,这是一个迟到的答案,但我今天正在寻找一个好的解决方案...... 这就是我现在正在使用的:
NSEntityDescription * myEntity = [object entity];
NSDictionary * attributes = [myEntity attributesByName];
if ([[[attributes objectForKey:key] attributeValueClassName] isEqualToString:@"NSDate"]) {
// this type is NSDate
}
希望这会有所帮助:)