Core Data モデルを新しいバージョンに移行しようとしている iOS アプリがあります。
Core Data モデルの v2 には 1 つの新しいフィールド (photoFilename) があり、その値は v1 フィールド (dateInSeconds) を使用して「.jpg」を追加して既存のエントリに対して生成できます。
例えば
version 1 | version 2
field data | field data
========================================|==============================
dateInSeconds (Integer 32) 401760341 | dateInSeconds (Integer 32) 401760341
| photoFilename (String) 401760341.jpg
コア データ マッピング モデルを作成しました (一部を以下に示します)。データベースは移行されているように見えます。残念ながら、作成された photoFilename は、「.jpg」の前に正しい番号を与えません。たとえば、「401760341.jpg」ではなく「275263312.jpg」が返される場合があります。
確かに、私は以前にそのようなマッピングを使用したことがなく、ここにある Apple のドキュメントは非常に限られているようです。
他の場所で調査すると、「値式」は NSExpression の一種であり、テスト目的で複製できるようです。
NSExpression *expr = [NSExpression expressionWithFormat:@"FUNCTION('', 'stringByAppendingFormat:', '%d.jpg', 401760341)"];
id result = [expr expressionValueWithObject:nil context:nil];
NSLog(@"result: %@", result);
ただし、これは「.jpg」の前の数字が間違っていると同様に評価されます。
得られた評価結果が私の期待した結果ではない理由を誰かが指摘できますか?