2013-05-19 8 views
5

Ich habe zwei Klassen, Company und MyCompany. MyCompany ist eine Unterklasse von Company und Company ist eine Unterklasse von NSManagedObject. Ich versuche, ein Prädikat für einen NSFetchRequest zu schreiben, der Ergebnisse der Klasse Company zurückgibt, aber MyCompany-Objekte herausfiltert.NSPredate, die Ergebnisse der Unterklasse herausfiltert

Ich habe die folgenden (von hier vorgeschlagen https://stackoverflow.com/a/8065935/472344) versucht:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"class != %@",NSStringFromClass([myCompany class])]; 

Aber ich erhalte eine Fehlermeldung:

'keypath class not found in entity <NSSQLEntity CKCompany id=1>' 

Ich habe auch versucht (vorgeschlagen von hier https://stackoverflow.com/a/11693983/472344, ich weiß, dass ich wirklich wollen nicht SELF isKindOfClass, aber ich war die Prüfung nur mit exakt dem gleichen Befehl in der Antwort, wie angegeben):

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self isKindOfClass: %@", [myCompany class]; 

und bekam die folgende Fehlermeldung:

'Unknown/unsupported comparison predicate operator type' 

Wie kann ich ein Prädikat zu erreichen schreiben, was ich will? Ich unterstütze iOS 5 und höher.

+0

Die fragliche Klasse ist kein NSObject und reagiert daher nicht auf "class" oder "className" – Stavash

+0

Firma und MyCompany sind NSObjects, so wie sie von NSManagedObject erben, aber mir ist jetzt klar, dass das Prädikat auf die Anwendung angewendet wird NSSQLEntity und meine Situation entspricht nicht der Situation, auf die diese Antworten reagierten. Ich brauche jedoch immer noch eine Lösung für mein Problem. – Darren

Antwort

7

können Sie

[fetchRequest setIncludesSubentities:NO]; 

so eingestellt, dass die Anfrage Objekte genau nur zurück holen den Entitätstyp des Antrags, und Unter-Entitäten nicht enthalten.

Es ist (soweit ich weiß) nicht möglich, auf die Objektklasse oder den Objektnamen in einem Vergleichselement zu verweisen, wenn das Vergleichselement in einer Core Data-Abrufanforderung verwendet wird.

+0

Das klingt, als würde es funktionieren, und danke für die zusätzlichen Informationen. Ich werde es versuchen. – Darren

+0

Ich kann bestätigen, dass es funktioniert. – pr1001

Verwandte Themen