3 Stimmen

Kerndatenabrufanfrage mit Array

Ich versuche, eine Abrufanforderung mit einem Prädikat festzulegen, um Datensätze im Speicher zu erhalten, deren Bezeichner-Attribut mit einer Reihe von Bezeichnern übereinstimmt, die im Prädikat angegeben sind, z. B.

NSString *predicateString = [NSString stringWithFormat:@"identifier IN %@", employeeIDsArray];

Das employeeIDsArray enthält eine Reihe von NSNumber-Objekten, die mit den IDs in der Filiale übereinstimmen. Ich erhalte jedoch die Fehlermeldung "Unable to parse the format string". Diese Art von Prädikat funktioniert, wenn es zum Filtern eines Arrays verwendet wird, schlägt aber, wie bereits erwähnt, bei einem Kerndatenabruf fehl. Wie sollte ich das Prädikat bitte setzen?

11voto

Dave DeLong Punkte 240835

NSPredicate verwendet keine Formate wie NSString tut. Das Ergebnis einer Prädikaterstellung unter Verwendung des vorgenerierten predicateString ist also kein gültiges Prädikat.

Sie müssen es zu einem eigentlichen Prädikat machen:

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"identifier IN %@", employeeIDsArray];
[fetchRequest setPredicate:predicate];

Voir die Dokumentation für weitere Informationen über Prädikatsformate.

4voto

Peter Hosey Punkte 94684

Wenn Sie diese Zeichenfolge mit stringWithFormat: ein, fügt diese Methode die Array's description (eine Zeichenkette, die den Inhalt des Arrays beschreibt), wo Sie %@ .

Das ist nicht das, was Sie wollen. Sie wollen nicht die Zugehörigkeit zu einer Zeichenkette testen, die das Array beschreibt; Sie wollen die Zugehörigkeit zu das Array . Also, gehen Sie nicht durch stringWithFormat: -Übergabe der Formatzeichenkette und des Arrays an predicateWithFormat: direkt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X