有没有人有一个核心数据中的fetched属性的工作示例?

我试图使用提取的属性几次,虽然它似乎是正确的方法,它从来没有工作。

在我最近的尝试中,我将fetched-property添加到我的实体中,select模型中的另一个实体作为“目的地”,并将谓词设置为我知道有效的条件。

问题1:当生成实体的NSManagedObject类时,它不包含fetched-property的任何内容。 经过一番search后,我在.h文件中添加了声明,在.m文件中添加了@dynamic语句(是的,我知道这是一个NSArraytypes)。

问题2:即使在那之后,当我在代码中访问这个属性时,我得到一个抛出的exception,说明取回请求没有实体。 我假设这个“实体”将是那个被指定为“目的地”的实体,事实上,这个实体就在那里。

所以,我希望有人提供一个具体的工作示例(iOS平台),其中在模型中定义了fetched-property,在NSManagedObject派生类中声明,实际从代码中使用。

在这一点上,我放弃了这个时间浪费,并简单地自己实现获取请求代码。

这里是我的相关代码(包括你已经提到的位):

我的例子有一个'Card'对象,它与'Stats'对象具有1->多种关系。 每个“统计”对象的“结果”可以是1-4。 我获取的属性是一个简单的给我的'卡'对象的数组''统计'对象只有'结果'= 1。

我想使用提取的属性,这样我就可以很容易地掌握具有一定数量和种类的“统计”对象的“卡”对象。

因此,在'Card'对象中,我将“获取属性”的“statsOfTypeOne”设置为“统计”。

在这个提取的属性的谓词,我把

 (SELF.outcome=1) AND (SELF.card=$FETCH_SOURCE) 

'SELF'是'stats'logging,$ FETCH_SOURCE在执行时奇迹般地变成'Card'对象。

正如你所做的那样,我把以下内容放在'Card'对象的.h和.m文件中:

 @property (nonatomic, retain) NSArray *statsOfTypeOne; @dynamic statsOfTypeOne; 

然后在我的代码中我使用:

 [self.managedObjectContext refreshObject:cardInstance mergeChanges:YES]; [cardInstance valueForKey:@"statsOfTypeOne"] 

得到数组(虽然cardInstance.statsOfTypeOne应该没问题)。 没有刷新对象,它没有更新Fetched属性(按照手册)。

认为这就是我所做的一切。 请让我知道这对你有没有用。

彼得

添加到@彼得的答案。 下面是我在Swift 2.0和Xcode 7中的工作原理:

 import Foundation import CoreData @objc(Card) class Card: NSManagedObject { @NSManaged var statsOfTypeOne: [Stat] } 

然后,读取获取的属性:

 managedObjectContext.refreshObject(someCard, mergeChanges: true) // This works and returns [Stat] type someCard.statsOfTypeOne // So does this someCard.valueForkey("statsOfTypeOne") as! [Stat] 

你看看这个前面的问题: Xcode 4核心数据:如何使用在数据模型编辑器中创build的抓取属性

通读所接受的答案和所有评论。 这听起来像他们已经整理出来了。