【问题标题】:iOS: what is the value expression function when migrating coredata relationship?iOS:迁移coredata关系时的值表达函数是什么?
【发布时间】:2012-12-19 04:50:01
【问题描述】:

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

这个“功能”是什么?它会怎么称呼?有没有介绍这个的指南?

我读过苹果的

Core Data Model Versioning and Data Migration programming guide

但我还是不明白。

【问题讨论】:

    标签: ios core-data core-data-migration


    【解决方案1】:

    这是一个“具有任意方法调用的函数表达式”,似乎记录得很差。我知道的唯一参考是NSExpression Class Reference 中的一段:

    函数表达式

    在 OS X v10.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 中所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 2017-01-04
      • 1970-01-01
      相关资源
      最近更新 更多