2012-12-19 40 views

回答

7

這是一個「具有任意方法調用的函數表達式」,這似乎很少記錄。唯一的參考,我知道的是在NSExpression Class Reference一個段落:

函數表達式

在OS X 10.4,NSExpression僅支持 組預定義的功能:sumcountminmaxaverage。使用 自定義關鍵字(例如,MAX(1, 5, 10))在謂詞語法中訪問了這些預定義函數。

在OS X v10.5及更高版本上,函數表達式還支持任意方法調用 。要使用這個擴展功能,你現在可以 使用語法FUNCTION(receiver, selectorName, arguments, ...),爲 例如:

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

在該示例代碼中的報價似乎是不正確的。但是,下面的代碼編譯並運行在iOS上5/6:

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

所以你的情況,它是要求,評估

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

當其中$manager$source被替換的函數表達式遷移管理器和源對象,如「核心數據模型版本控制和數據遷移編程指南」中的Mapping Model Objects中所述。