2016-09-26 5 views
1

ich ziemlich verwirrt bin, warum die folgende nicht funktioniert:Core Data - Fetch Anfrage Ergebnisse nicht das Prädikat passende

enter image description here

Wie Sie in der Debug-Konsole sehen kann, ist der Wert für newerContentAvailable ist 0, obwohl ich nur Objekte haben möchte, die diesen Wert auf 1 gesetzt haben. Aber es hat trotzdem seinen Weg in die Ergebnisse gefunden.

Ja, ich benutze MagicalRecord, aber zweifelhaft hat das etwas damit zu tun. Es ist eine alte, ausgereifte Codebasis und MR_findAllWithPredicate:... erstellt nur eine Abrufanforderung für dieses Datenmodell und legt das Prädikat des Abrufs fest.

Gibt es etwas, das ich nicht über Core Data verstanden habe? Ich gebe zu, es ist ein Biest von einem Framework und Best Practices sind knapp.

Wäre für einige Hilfe sehr dankbar!

+0

Versuchen Sie, den Namen des Attributs 'newerContentAvailable' zu ​​ändern - ich habe eine vage Erinnerung, dass CoreData von Attributen, die mit "new" beginnen, überfordert wird. – pbasdf

+0

Das scheint es behoben zu haben! Sorge dafür, eine Antwort dafür zu schreiben und ich werde es aufwerten? – horseshoe7

+0

Froh, dass es sortiert. Bizarr, was? Ich werde eine Antwort hinzufügen, danke. – pbasdf

Antwort

0

Der NSNumber-Wert von NSNumber wird nicht ersetzt, wenn er mit% @ -Format verwendet wird. Sie müssen den Wert intValue oder floatValue (doubleValue usw.) erhalten, der den richtigen Typ zurückgibt.

sollte das Prädikat sein,

NSPredicate *findPred = [NSPredicate predicateWithFormat:@"newerContentAvailable == 1"]; 

ODER

+0

Nein. Hat nicht funktioniert. Und wenn ich den Skalartyp abfragen würde, würde ich newerContentAvailableValue nicht einfügen? Ich habe es seit Jahren im OP gemacht und nie ein Problem. Der Skalartyp ist eigentlich ein BOOLEAN, also hat die Verwendung von @YES auch nicht funktioniert. – horseshoe7

1

glaube ich, das Problem ist ein Ergebnis der Attributnamen sein können Sie verwendet haben: Namen mit new... Anfang scheinen ein unerwartetes Verhalten zu verursachen (*). Versuchen Sie, den Attributnamen zu ändern, um zu sehen, ob dieser sortiert wird.

(*) Siehe zum Beispiel this question and answer.

Verwandte Themen