iOS:迁移coredata关系时,值表达式函数是什么?

Car*_*loS 8 core-data core-data-migration ios

关系的功能如下: FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:","employeesToEmployees",$source.employees")

这个"功能"是什么?它将如何被称为?是否有任何指南介绍给这个?

我读过Apple的

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

但我仍然没有得到这个.

Mar*_*n R 9

这是一个"具有任意方法调用的函数表达式",似乎记录很少.我所知道的唯一引用是NSExpression类参考中的一个段落:

功能表达

在OS X v10.4的,NSExpression仅支持一组预定义的功能:sum,count,min,max,和average.使用自定义关键字(例如,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
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,它是一个函数表达式,在计算时调用

[$manager destinationInstancesForEntityMappingNamed:@"employeesToEmployees"
                                    sourceInstances:$source.employees]
Run Code Online (Sandbox Code Playgroud)

其中$manager$source由迁移管理器和源对象替换,如"核心数据模型版本控制和数据迁移编程指南" 中的映射模型对象中所述.