NSPredicate gibt keine Ergebnisse mit Abrufanforderung zurück, funktioniert mit Array-Filterung

8

Meine Situation ist einfach: Ich habe einige Datensätze in meinem Kerndatenspeicher. Eines ihrer Attribute ist eine Zeichenfolge namens "localId". Es gibt einen Punkt, an dem ich den Datensatz mit einem bestimmten localId-Wert finden möchte. Der offensichtliche Weg dazu ist mit einem NSFetchRequest und einem NSPredate. Wenn ich dies jedoch aufstelle, gibt die Anfrage null Datensätze zurück.

Wenn ich jedoch die Abrufanforderung ohne das Prädikat verwende, alle Datensätze zurücksende und nur über sie hinwegspringe, um nach dem Zielwert localId zu suchen, finde ich den Datensatz, nach dem ich suche. Mit anderen Worten, der Datensatz ist da, aber die Abrufanforderung kann ihn nicht finden.

Meine anderen Methoden, in denen ich Abrufanforderungen und Prädikate verwende, funktionieren alle wie erwartet. Ich weiß nicht, warum dieser hier versagt.

Ich möchte das tun:

%Vor%

Aber am Ende muss ich das tun:

%Vor%

Irgendwelche Hinweise darauf, was schief gehen könnte?

Bearbeiten

Ich habe festgestellt, dass ich das Prädikat, das ich erstelle, verwenden kann, um die erwarteten Ergebnisse zu erhalten, nachdem die Abrufanforderung ausgeführt wurde. Folgendes funktioniert also auch:

%Vor%

AKTUALISIEREN

Ich bin auf jemanden gestoßen, der gerade dieses Problem hat:

Ссылка

Er hat auch keine Lösung gefunden.

Blimey! Ich bin ratlos.

Danke!

    
CharlieMezak 23.03.2011, 13:25
quelle

2 Antworten

1

Hasse es zu sagen, aber die häufigste Ursache für diese Art von Problemen sind einfache Tippfehler. Stellen Sie sicher, dass die Attributnamen und das Prädikat identisch sind. Stellen Sie sicher, dass die Eigenschaftsnamen und die Attributnamen identisch sind. Wenn ein Verweis auf eine Eigenschaft funktioniert, aber ein Verweis auf den Attributnamen nicht vorhanden ist, liegt wahrscheinlich ein Konflikt vor.

Sie könnten für Letzteres testen, indem Sie die Rückgabe von:

vergleichen %Vor%

... mit der Rückkehr von:

%Vor%     
TechZen 23.03.2011, 19:42
quelle
4

Wenn localId ein numerischer Wert ist, dann sollten Sie ein NSNumber -Objekt in der Prädikatformation anstelle von NSString verwenden.

%Vor% Die Zeichenfolgen

NSPredicate format automatisch NSString-Objekte.

    
codelark 23.03.2011 14:56
quelle