2016-07-14 12 views
0

Ich versuche, alle Objekte aus meiner Realm-Datenbank, die mindestens einen zusätzlichen App-Typ (= Kategorie) zu den gegebenen haben. Mein Ansatz war:Verwendung von NONE ... IN bei der Verwendung einer SUBQUERY als NSPredicate

let predicateString = String(format: "SUBQUERY(app_types, $apptype, $apptype.name IN %@)[email protected] > 0", hiddenDeviceCategories) 
let predicate = NSPredicate(predicateString) 

Unfortunetaly Ich erhalte den Fehler Unable to parse the format string "SUBQUERY([...]"

Kann ich NOT ... IN in einer Unterabfrage nicht verwenden?

+0

Die „Kann-Format Zeichenfolge analysieren“ Ausnahme von 'NSPredicate' ausgelöst wird, wenn das Prädikat zu analysieren versucht. Von dem, was ich die Format-String sehen Sie zur Verfügung gestellt haben gültig ist. Ist das Format string in Ihrer Frage genau, was Sie in Ihrem Code verwenden? – bdash

+0

Ich habe einige Pausen für mehr Lesbarkeit. Der genaue Code ist 'PrädikatString = String (format:" SUBQUERY (app_types, $ apptype, $ apptype.name IN% @). @ count> 0 ", hiddenDeviceCategories)' – Michel

+1

Der genaue Code sollte in der Frage sein, nicht in den Kommentaren versteckt. –

Antwort

0

versuchen, wie diese Unterabfrage ("app_types, $ apptype, apptype.name = [cd]% @!) @ Count> 0."

+0

Danke für die schnelle Hilfe - aber immer noch: ''Parsing die Formatzeichenfolge" SUBQUERY (app_types, $ apptype, $ apptype.name! = [cd] ( Spiele, iPhone )). @ Count> 0 "'' – Michel

1

Damen und Herren -

Tut mir schrecklich leid diese Frage. Ich dachte:

let predicateString = String(format: '[...]', myArgs) 
let predicate = NSPredicate(predicateString) 

ist in Ordnung - aber es ist nicht.

leider :(

+0

Ja, 'NSString' und' NSPredicate' verwenden beide '% @' für einen Ersatzplatzhalter, aber sie tun dies auf unterschiedliche Weise. 'NSString' interpoliert eine Zeichenfolgendarstellung des Objekts direkt in den String, während' NSPredicate' einen Verweis auf das Objekt in den resultierenden Ausdrucksbaum einfügt. – bdash

+0

Danke für die Erklärung :) – Michel