确定NSManagedObject属性是否可选

Sko*_*ota 2 iphone core-data objective-c nsmanagedobject ios

我正在使用Core Data并且有一个NSManagedObject被调用的子类Person(它是Core Data中的一个实体).Person对象具有多个特性(例如firstName,lastName等)和关系(例如friends,coWorkers).其中一些属性是可选的,而其他属性是强制性的.

给定一个Person对象如何有效地确定特定属性或关系是可选的还是强制的?

我想尝试避免必须通过Person对象的每个属性进行某种低效的循环,因为我需要经常调用代码,所以类似于下面的伪代码的东西是完美的:

if ( [[aPerson getProperty:@"firstName"] isOptional] ) {

    // do stuff

}
Run Code Online (Sandbox Code Playgroud)

......但我不确定是否可以这样做.上面的伪代码也只会检查属性,所以我猜测在检查属性是一种关系的情况下还需要做其他事情.

我意识到,执行单个循环并将所有必需属性的名称存储在数组中可能更有效(然后只检查该数组是否存在属性名称)这就是我现在正在做的事情,但是不幸的是,它并没有真正适用于我的代码结构(因此需要更多的"按需"方法).

任何帮助将不胜感激 :)

小智 6

您可以在基类中编写函数

NSDictionary *d = [[self entity] attributesByName];
NSAttributeDescription *attr = (NSAttributeDescription *)[d objectForKey:@"test"];
BOOL isopt = [attr isOptional];
Run Code Online (Sandbox Code Playgroud)