iOS:什么是迁移coredata关系时的值expression式函数?

关系函数如下所示: FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:","employeesToEmployees",$source.employees")

这个“function”是什么? 它将如何被称为? 有没有任何指导介绍这个?

我读过苹果的

核心数据模型版本控制和数据迁移编程指南

但我还是不明白

这是一个“任意方法调用的函数expression式”,这似乎是非常糟糕的logging。 我所知道的唯一参考是NSExpression类参考中的一个段落:

函数expression式

在OS X v10.4上, NSExpression仅支持一组预定义的函数: sumcountminmaxaverage 。 这些预定义的函数是使用自定义关键字(例如, MAX(1, 5, 10) )在谓词语法中访问的。

在OS X v10.5及更高版本中,函数expression式还支持任意的方法调用。 要使用此扩展function,现在可以使用语法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 

所以在你的情况下,它是一个函数expression式,在评估时调用

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

其中$manager$source被迁移pipe理器和源对象所取代,如“核心数据模型版本控制和数据迁移编程指南”中的映射模型对象中所述。