11

関係の関数は次のようになります。FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:","employeesToEmployees",$source.employees")

この「機能」とは?どのように呼ばれますか?これを紹介するガイドはありますか?

Appleのを読んだ

CoreDataモデルのバージョン管理とデータ移行プログラミングガイド

しかし、私はまだこれを取得していません。

4

1 に答える 1

12

これは「任意のメソッド呼び出しを伴う関数式」であり、文書化が非常に不十分なようです。私が知っている唯一のリファレンスは、NSExpressionクラスリファレンスの1つの段落です。

関数式

OS X v10.4では、事前定義NSExpressionされた一連の関数、、、、、、およびのみをサポートします。これらの事前定義された関数は、カスタムキーワード(たとえば)を使用して述語構文でアクセスされました。sumcountminmaxaverageMAX(1, 5, 10)

OS X v10.5以降では、関数式は任意のメソッド呼び出しもサポートします。この拡張機能を使用するために、次の構文FUNCTION(receiver, selectorName, arguments, ...)を使用できるようになりました。

FUNCTION(@"/Developer/Tools/otest", @"lastPathComponent") => @"otest"

そのサンプルコードの引用は正しくないようです。ただし、次のコードはiOS5/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で説明されているように、移行マネージャーとソースオブジェクトに置き換えられます。

于 2012-12-28T10:26:34.083 に答える