2012-12-19 6 views

Antwort

7

Dies ist eine "Funktionsausdrücke mit beliebigen Methodenaufrufen", die sehr schlecht dokumentiert scheinen. Der einzige Hinweis, die ich kenne ist ein Absatz in den NSExpression Class Reference:

Funktionsausdrücken

Unter OS X v10.4, NSExpression nur unterstützt einen vordefinierten Satz von Funktionen: sum, count, min , max und average. Auf diese vordefinierten Funktionen von wurde in der Prädikatsyntax unter Verwendung von benutzerdefinierten Schlüsselwörtern zugegriffen (z. B. MAX(1, 5, 10)).

Auf OS X 10.5 und höher unterstützen Funktionsausdrücke auch beliebige Methodenaufrufe der Methode . Um diese erweiterten Funktionen zu nutzen, können Sie jetzt die Syntax FUNCTION(receiver, selectorName, arguments, ...), für Beispiel:

FUNCTION(@"/Developer/Tools/otest", @"lastPathComponent") => @"otest"

Die zitierte in diesem Beispielcode scheint falsch sein. Aber der folgende Code kompiliert und läuft auf iOS 6.5:

NSExpression *expr = [NSExpression expressionWithFormat:@"FUNCTION('/Developer/Tools/otest', 'lastPathComponent')"]; 
id result = [expr expressionValueWithObject:nil context:nil]; 
NSLog(@"result: %@", result); 
// Output: 
// otest 

Also in Ihrem Fall ist es eine Funktion Ausdruck, der ruft, wenn ausgewertet

[$manager destinationInstancesForEntityMappingNamed:@"employeesToEmployees" 
            sourceInstances:$source.employees] 

wo $manager und $source durch die ersetzt werden Migrationsmanager und das Quellobjekt, wie in Mapping Model Objects im "Core Data Model Versioning and Data Migration Programming Guide" beschrieben.

Verwandte Themen