Verwenden Sie ein NSPredicate zu erkennen, NICHT ENTHÄLT
Gebe ich auf. Ich habe versucht, jede Kombination, die ich mir vorstellen kann, um zu überprüfen, ob ein string einen anderen string enthält. Hier ist ein Beispiel für die intuitive syntax zu beschreiben, was ich machen möchte:
NSPredicate* pPredicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS[c] %@)",
NSMetadataItemFSNameKey,
[NSString stringWithFormat:@"Some String"]];
Unabhängig davon, wie ich die Verschiebung-NICHT etwa, verwenden die ! Betreiber statt, eine Verschiebung der Klammern oder entfernen Sie Sie ganz, ich bekomme immer einen exception-Analyse in diesem Ausdruck.
Was falsch ist mit diesem Ausdruck?
EDIT: Die exception passiert, wenn ich call
[pMetadataQuery setPredicate:pPredicate];
und die Ausnahme ist: * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unbekannter Typ von NSComparisonPredicate gegeben NSMetadataQuery (kMDItemFSName ENTHÄLT[c] "Some String")'
- Mögliche Duplikate dieser Frage: stackoverflow.com/questions/8580715/...
- Können Sie uns sagen, was die Ausnahme ist?
- joern, ich habe viele ähnliche Fragen, aber wie, dass man, es beantwortet nicht meine Frage. "IN" ist nicht das gleiche wie enthält, da es sich um Sätze (wie ich es verstehe). @Tommy, ich aktualisiert die Frage. Ich hoffe, das hilft.
- möglich, Duplikat der Schreiben Sie eine NSPredicate, die true zurückgibt wenn die Bedingung nicht erfüllt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte ich vollen Erfolg mit:
Den zweiten zwei Objekte der drei in
testArray
endete infilteredArray
unter OS X v10.7 und iOS v4.3. Also das Problem ist nicht das Prädikat — macht dies technisch eine vollständige Antwort auf die Frage — es ist eine Art von Einschränkung inNSMetadataQuery
. Leider habe ich keine Erfahrung in diesem Bereich, aber es ist sicherlich die nächste Sache zu recherchieren.Swift 3.0