核心数据关系映射:值表达式中的双引号自动变成单引号

Posted

技术标签:

【中文标题】核心数据关系映射:值表达式中的双引号自动变成单引号【英文标题】:Core Data Relationship Mappings: Double Quotes in Value Expression are automatically turned into single quotes 【发布时间】:2016-01-27 10:34:54 【问题描述】:

在为核心数据迁移生成映射模型后,关系映射的所有值表达式都正确生成,除了 1 个值表达式,其中参数使用单引号 (') 而不是双引号 (")。这会导致解析错误。

这是我所期望的:

FUNCTION($manager ,"destinationInstancesForEntityMappingNamed:sourceInstances:" , "MatchToMatch" , $source.matches)

但这就是函数表达式的生成方式:

FUNCTION($manager ,'destinationInstancesForEntityMappingNamed:sourceInstances:' , 'MatchToMatch' , $source.matches)

A specific Value Expression is always generated with single quotes

当我将右侧边栏中的“Source Fetch”选项更改为“Use Custom(...)”并手动输入表达式时,所有双引号都会变回单引号。

当我直接在映射编辑器表中更改值表达式时,我收到以下错误消息:

无法解析格式字符串 "FUNCTION($manager >,"destinationInstancesForEntityMappingNamed:sourceInstances:" , >"MatchToMatch" , $source.matches) == 1"

当我构建并运行迁移时,我收到以下错误消息:

2016-01-27 10:30:33.875 mapc[1431:352140] *** 由于 > 未捕获异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'无法解析 > 格式字符串“FUNCTION($ manager >,'destinationInstancesForEntityMappingNamed:sourceInstances:' , >'MatchToMatch' , $source.matches) == 1"'

有人可以解释一下,发生了什么,我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

这里的问题是matches是一个保留关键字。

保留关键字: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html

检查此处描述的注释: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmMappingOverview.html

【讨论】:

这是我的情况,谢谢!另请注意,关键字不区分大小写【参考方案2】:
    您需要删除损坏的关系 用空的“值表达式”添加一个新的 Look here

【讨论】:

虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。

以上是关于核心数据关系映射:值表达式中的双引号自动变成单引号的主要内容,如果未能解决你的问题,请参考以下文章

Python-json的双引号被自动转为单引号

为啥双引号会变成单引号

单引号中的双引号,反之亦然

PHP中的双引号和单引号的应用

JavaScript中的双引号与单引号[重复]

为啥双引号变单引号了?