does anyone have a working example of a fetched-property in core-data?

♀尐吖头ヾ 提交于 2019-12-02 18:08:57

Here's my relevant bits of code (including bits you've already mentioned):

My example has a 'Card' object that has a 1->many relationship with a 'Stats' object. Each 'Stats' object has an 'outcome' that can be 1-4. My fetched property is a simple one to give my 'Card' object an array of 'Stats' objects that are of 'outcome'=1 only.

I wanted to use the fetched property so that I could easily get hold of 'Card' objects that had more than a certain number and kind of 'Stats' objects.

So, in the 'Card' object I put the Fetched Property 'statsOfTypeOne', with Destination set to 'Stats'.

In the predicate for this fetched property I put

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

'SELF' is the 'stats' record, and $FETCH_SOURCE magically becomes the 'Card' object when executed.

As you did, I put the following in the .h and .m files for the 'Card' object:

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

Then in my code I used:

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

to get at the array (although cardInstance.statsOfTypeOne should be fine). Without the refresh object it wasn't updating the Fetched property (as per the manual).

I think that's everything that I did to make it work. Let me know if it works for you.

Peter

Adding to @Peter's answer. Here's how I got it working in Swift 2.0 and Xcode 7:

import Foundation
import CoreData

@objc(Card)
class Card: NSManagedObject {

    @NSManaged var statsOfTypeOne: [Stat]

}

And then, to read the fetched property:

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

Have you taken a look at this previous question: Xcode 4 Core Data: How to use fetched property created in Data Model editor

Read through the accepted answer and all of the comments. It sounds like they have it sorted out.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!