iOS:什么是迁移coredata关系时的值expression式函数?
关系函数如下所示: FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:","employeesToEmployees",$source.employees")
这个“function”是什么? 它将如何被称为? 有没有任何指导介绍这个?
我读过苹果的
核心数据模型版本控制和数据迁移编程指南
但我还是不明白
这是一个“任意方法调用的函数expression式”,这似乎是非常糟糕的logging。 我所知道的唯一参考是NSExpression类参考中的一个段落:
函数expression式
在OS X v10.4上,
NSExpression
仅支持一组预定义的函数:sum
,count
,min
,max
和average
。 这些预定义的函数是使用自定义关键字(例如,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理器和源对象所取代,如“核心数据模型版本控制和数据迁移编程指南”中的映射模型对象中所述。