Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Variable Substitution with FetchRequests stored in a CoreData Model

I've always created my NSFetchRequests entirely in-code. Now I'm looking at the Xcode GUI for building a fetch request and storing it in the model.

I'm following an example from the Xcode Documentation. I added a Fetch Request to my model, and the predicate that has been created through the Modelling GUI is:

 firstName LIKE[c] "*SUBSTRING*"

I then retrieve that request with these two lines:

NSDictionary *substituionDictionary = [NSDictionary dictionaryWithObject:@"woody" forKey:@"SUBSTRING"];

NSFetchRequest *fetchRequest = [mom fetchRequestFromTemplateWithName:@"firstNameContains" substitutionVariables:substituionDictionary];

An NSLog of the resulting NSFetchRequest outputs this:

(entity: Customer; predicate: (firstName LIKE[c] "*SUBSTRING*"); sortDescriptors: (null); limit: 0)

.. which indicates that the variable is not being substituted prior to the return of the stored FetchRequest.

So, how does one specify that text entered in the Xcode Data Modelling Fetch Request Predicate Builder GUI is intended to be substituted at runtime by NSFetchRequest:fetchRequestFromTemplateWithName:substitutionVariables: ?

Thank you!

Woody

like image 388
Woodster Avatar asked May 24 '10 12:05

Woodster


People also ask

What is core data fetch request?

Fetch requests allow us to load Core Data results that match specific criteria we specify, and SwiftUI can bind those results directly to user interface elements. If you followed my Core Data and SwiftUI set up instructions, you've already injected your managed object context into the SwiftUI environment.

What is Nsfetch request?

A description of search criteria used to retrieve data from a persistent store.


1 Answers

You need to right-click on the row of the fetch request predicate editor containing the intended variable and select "VARIABLE" from the popup. Where you right-click is sometimes picky in the Xcode editor, so I tend to click just to the left of the +/- buttons.

like image 68
Barry Wark Avatar answered Nov 07 '22 11:11

Barry Wark