ios sdk - 检查新创建的nsmanagedobject属性的真实类型(值类型为nsnull)

时间:2011-07-12 10:38:38

标签: objective-c ios core-data

我正在从nsdictionaries创建各种nsmanagedobjects,当我迭代对象的属性时,我从字典中分配相应的值。

目前我检查这样的类型:

if ([attributeValue isKindOfClass:[NSString class]]) {
   ...
}

现在的问题是,一旦创建了托管对象,所有(例如字符串)值都不会响应比较类。显然他们也不是。我想念除了nsnumber以外的一切。

[[attributeValue class] description]

对于除了未设置值的nsnumbers之外的所有内容都是空的。

有没有办法访问属性本身的类型,就像在类头中定义的那样,而不是使用(仍未设置)值?

2 个答案:

答案 0 :(得分:1)

模型中的每个NSManagedObject都有一个对应的NSEntityDescription。您可以使用实体说明获取attributesrelationships的列表。这些将是NSAttributeDescriptionNSRelationshipDescription s,其中包含您需要的信息。

答案 1 :(得分:0)

我知道,这是一个迟到的答案,但我今天正在寻找一个好的解决方案...... 这就是我现在正在使用的:

NSEntityDescription * myEntity = [object entity];
NSDictionary * attributes = [myEntity attributesByName];
if ([[[attributes objectForKey:key] attributeValueClassName] isEqualToString:@"NSDate"]) {
    // this type is NSDate
}                        

希望这会有所帮助:)