有没有人有一个核心数据中的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的抓取属性
通读所接受的答案和所有评论。 这听起来像他们已经整理出来了。
- 无法在RestKit中映射NSManagedObject的对象数组
- 核心数据嵌套托pipe对象上下文和频繁死锁/冻结
- 当从Child ManagedObjectContext和Parent ManagedObjectContext保存时,CoreDataTableView不更新
- NSFetchedResultsController在合并“NSManagedObjectContextDidSaveNotification”后没有显示所有结果
- 致命错误:值无法从Swifttypes桥接到Objective-Ctypes
- iOS Swift – 具有复杂数据关系的核心数据示例
- 为实体插入新的对象的CoreData给我错误时使用setValue:forKey:与一个int
- 使用iCloud在多个设备上同步核心数据
- NSPredicate:如何将string视为数字?