核心数据 - 处理动态属性

问题描述:

我需要一种方法来处理NSManagedObject子类中的动态属性。我现在所做的是检查对象的date(NSDate类)属性是否被[NSDate now]传递。如果该日期属性已通过,则该对象将被标记为overdue核心数据 - 处理动态属性

所以每当我需要显示对象是否过期,我需要做上面的比较。所以这个属性可以切换状态过期而不是过期。这样做一直都是错误的。有没有办法做到这一点automagically? I. e。每次我从数据库中获取对象时,Core Data会为我执行上述这个方法?

+1

你不应该坚持从其所获得的数据一起派生属性:看上去像“没有逾期”在时取回可能成为逾期一秒钟后,但你的程序将不知道。 – dasblinkenlight 2012-08-17 14:27:24

+0

因此,每次我需要检查一个对象是否过期时,我需要手动执行我的逻辑?我认为Core Data有一些方法可以将它保存为“智能”属性(如OS X中的“智能”文件夹)。 – 2012-08-17 14:35:33

+0

我不知道如何在Core Data方法中实现* this,但是在执行过程中,每次您打电话检查过期状态时都应执行检查。 – dasblinkenlight 2012-08-17 14:39:59

你可以实现你通过使用NSManagedObject子类,并临时属性在找什么。

您想要的动态属性可以通过创建'transient'属性来实现。您可以通过检查瞬态选项来设置属性瞬态。瞬态属性不会持续到本地商店。

通过使用新的文件向导,它位于类别“核心数据”下创建一个NSManagedObject子类的实体。

在创建类,只需要创建一个getter方法为您的动态属性返回你想要什么。

现在,您可以在提取请求期间使用此功能。

你不应该试图坚持的逾期状态,因为它依赖于一个变量,它总是在不断变化。如果您需要根据下一个过期对象执行某些操作,只需获取未过期的数据,按日期对其进行排序,并找到下一个过期的数据。然后,您可以执行dispatch_after以在记录逾期时执行您的应用程序的任何操作。