2012-12-19 17 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中所述。