• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

NSExpression mit NSComparisonPredicate und NSCompoundPredicate

BluyMul

Idared
Registriert
21.06.13
Beiträge
29
Hallo liebe Forengemeinde,

ich hab ne kleine Verständnis frage zu diesem Beispiel.

Code:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:EnitiyName];
   
    NSPredicate     *keyPredeicate      = [NSPredicate predicateWithFormat:@"nrPerson == %i",nrPers];
   
    NSExpression    *maxKeyExpression   = [NSExpression expressionForKeyPath:@"nrBeitrag"];
    NSExpression    *maxExpression      = [NSExpression expressionForFunction:@"max:" arguments:[NSArray arrayWithObject:maxKeyExpression]];
    NSPredicate *maxPredicate = [NSComparisonPredicate
                                 predicateWithLeftExpression:maxKeyExpression
                                 rightExpression:maxExpression
                                 modifier:NSDirectPredicateModifier
                                 type:NSEqualToPredicateOperatorType
                                 options:0];
   
    NSPredicate *lastPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:maxPredicate, keyPredeicate, nil]];
    [fetchRequest setPredicate:lastPredicate];
   
    NSError *error = nil;
    assert(!error);
    NSArray *objects = [cdm executeFetchRequest:fetchRequest error:&error];

als Fehlerbekomme ich :
[__NSCFNumber count]: unrecognized selector sent to instance

Abbilden möchte ich gerne diesen SQL
Select * from Beitrag where nrPerson == nrPers and nrBeitrag == max(nrBeitrag);

Laut meinem Verständnis der Beispiele von Apple, sollte dieses Funktionieren.
Aber nach dem Fehler wird wohl das Erste Predicate als Number zurückgeben und nicht als Ausdruck von (nrBeitrag == max(nrBeitrag)).

Könnt ihr mir eventuell ein paar Tips oder Erklärungen geben wie ich dieses Richtig verstehen kann?

Grüsse BluyMul
 

BluyMul

Idared
Registriert
21.06.13
Beiträge
29
So nun habe ich eine Lösung gefunden :)
wenn man es mal ein paar Tage Liegen lässt und den Kopf frei macht
findet man die Lösung :)

Die Lösung ist das oberste Predicate bei "nrPerson==%i"
selbst in eine NSExpression zusetzten und diese beiden dann per NSCompoundPredicate zusammen zusetzten.

Ich wünsch euch noch eine Gute Nacht.
 

BluyMul

Idared
Registriert
21.06.13
Beiträge
29
Hallo,

nach langer Programmierung der Contrains bin ich bei meinen Testdaten gelandet,
meine Lösung wie oben beschrieben funktioniert solange es keine weitere Person gibt.

Kann mir wer helfen also als Prädikate benutze ich diese abfragen

nrPerson == nrPers and nrBeitrag == max(nrBeitrag)

solange ich nur eine Person habe ist alles ok aber sobald ich eine weitere Person habe wird es nicht mehr ermittelt.
bzw findet keine Objekte keine mehr

:(

ist sicherlich ne Kleinigkeit aber ich find sie nicht :-D

über nen dialog würde ich mich freuen kann auch per pn sein
 
Zuletzt bearbeitet: