ios - 核心数据迁移期间的值表达式导致异常结果

标签 ios objective-c core-data data-migration nsexpression

我有一个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/

相关文章:

ios - 我如何通知客户端以便某个帖子不再存在?

objective-c - 具有内存存储的核心数据

ios - 核心数据,访问关系是否会导致查表?

ios - 无法使用 SwiftUI 加载相机

ios - 从另一个类 Objective-C 调用时方法不起作用

iphone - CGImageDestinationCreateWithData 没有创建 CGImageDestinationRef 对象

ios - 如何检查 NSDictionary 键是否为 NULL

ios - 使用自动布局绘制自定义 UIView 并将其居中作为背景

ios - 将消息从 Azure 应用程序推送到 MonoTouch (iPhone) 应用程序,无需 Apple 推送通知

ios - 如何使用 React Native 接收在 iOS 上导出/共享的文件