我有一个iOS应用,正在尝试将其核心数据模型迁移到新版本。
Core Data模型的v2中有一个新字段(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'前面没有给出正确的数字。例如,它可能返回“275263312.jpg”而不是“401760341.jpg”
现在,坦白地说,我以前从未使用过这种映射,Apple文档here似乎非常有限。
在其他地方进行研究,似乎“值表达式”是NSExpression的一种,可以将其复制以进行测试。
NSExpression *expr = [NSExpression expressionWithFormat:@"FUNCTION('', 'stringByAppendingFormat:', '%d.jpg', 401760341)"];
id result = [expr expressionValueWithObject:nil context:nil];
NSLog(@"result: %@", result);
但是,这与“.jpg”前面的错误数字类似地评估。
有人可以指出为什么获得的评估结果不是我的预期结果吗?
最佳答案
我仍然不确定导致问题的确切原因,但是在我的映射模型中,通过将其转换为NSString遇到了以下问题
或对于那些跟随使用NSExpression的人
NSExpression *expr = [NSExpression expressionWithFormat:@"FUNCTION('', 'stringByAppendingFormat:', '%@.jpg', CAST(401760341, 'NSString') )"];
id result = [expr expressionValueWithObject:nil context:nil];
NSLog(@"result: %@", result);
关于ios - 核心数据迁移期间的值表达式导致异常结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18986065/