Ich habe Speicher mit Entitäten, die Coords (x, y, z) haben. Ich möchte sie mit Prädikat wie @ "sqrt (x x + y y + z * z) < Abstand" holen.Gibt es eine Möglichkeit, Funktionen in NSPredicate PrädikatWithFormat zu verwenden:
Gibt es eine Möglichkeit, dies zu tun?
Ich habe versucht, thi mit predicateWithFormat zu tun:
Ich schrieb sogar eine Menge Code, der
NSExpression * dxExpression = [NSExpression expressionForFunction:@"from:subtract:"
arguments:[NSArray arrayWithObjects:
[NSExpression expressionForConstantValue: [NSNumber numberWithFloat:currX]],
[NSExpression expressionForKeyPath:@"self.xCoord"], nil]
];
NSExpression * dxSqrExpression = [NSExpression expressionForFunction:@"multiply:by:"
arguments:[NSArray arrayWithObjects:dxExpression, dxExpression, nil]
];
wie
sieht Aber es funktioniert nur für nicht hierarchische Ausdrücke. Das heißt, so dxExpression funktioniert gut, aber wenn ich versuche, dxSqrExpression zu verwenden, erhalte ich FehlerTerminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Unsupported function expression (-140.857 - #self.xCoord) * (-140.857 - #self.xCoord)'
Ich habe ohne selbst versucht, aber auch dies nicht funktioniert.
Jede Hilfe wird geschätzt, danke.
okay, so alt ist, aber ich werde noch meine Körnchen Salz hinzuzufügen, da ich in das gleiche Problem nur lief. Nathans Lösung funktioniert, aber wenn der Laden groß ist, kann es teuer werden. Eine Möglichkeit zur Optimierung besteht darin, zuerst ein NSPredicate zu verwenden, das die Ergebnisse in einer Bounding Box anstelle der gesuchten Begrenzungssphäre zurückgibt. Dann können Sie die von Nathan vorgeschlagene Filtermethode verwenden, um an Genauigkeit zu gewinnen. – mprivat