我的数据模型中有一个实体,其字符串属性当前是可选的,我想将其转换为默认值为空字符串的必需属性。
正如其他人发现的那样,在 Xcode Core Data 数据建模器中将默认值留空会导致验证错误(因为设计者将其解释为 NULL),但尝试将 ''、"" 或 @"" 作为默认值会导致这些错误文字字符被解释为默认值,而不是根据需要解释为空的零长度字符串。
我确实找到了这个线程 http://www.cocoabuilder.com/archive/cocoa/188754-using-an-empty-string-as-the-default-value-for-core-data-attribute-in-the-xcode-modeller.html然而,在谷歌上,除了解决方案非常丑陋(模型定义在.xcdatamodel
和 objc 源),它也不适用于轻量级迁移,因为这些迁移仅基于.xcdatamodel
文件和实体实现中的 objc 逻辑未加载。
有没有办法在数据模型设计器中实现这一点?
这是一个非常有趣的问题。经过一些测试后,我认为这是不可能的,因为数据模型中文本字段的配置方式。
原则上,您可以使用 unicode 空集字符\u2205
表示默认的空字符串,但文本字段似乎不接受任何转义,因此它将任何转义 unicode 字符代码的尝试转换为代码字符本身的文字字符串,例如输入 '\u2205' 最终会变成文字文本 '\u2205'。
理论上,您可以编写一个实用程序应用程序来读取以图形方式生成的托管对象模型文件,然后以编程方式将属性默认值设置为等于空字符串,然后将文件保存回磁盘。我说“理论上”是因为没有记录的方法可以从代码中保存托管对象模型文件。您可以读取并在内存中修改它,但不能保留更改。
我认为有点疏忽。
我认为您别无选择,只能在模型首次加载时实用地设置默认空字符串。这很简单,但很丑陋,你必须记住你所做的(特别是如果你迁移版本),但我认为现在这是唯一的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)