2013-12-14 98 views
0

我有一个iPad应用程序,我使用MagicalRecord将核心数据实体保存在SQLite d/b中。 一切工作正常,直到我决定使用FTASync将核心数据与Parse.com同步。使用mogenerator与核心数据实体导致保存数据存储错误

FTASync的部分要求是您必须使用mogenerator来生成实体类文件。现在,我得到这个错误:

2013-12-14 12:38:59.375 foo[5451:70b] Failed to save to data store: The operation couldn’t be completed. (Cocoa error 1560.) 
2013-12-14 12:38:59.380 foo[5451:70b] DetailedError: { 
    NSLocalizedDescription = "The operation couldn\U2019t be completed. (Cocoa error 1570.)"; 
    NSValidationErrorKey = objectId; 
    NSValidationErrorObject = "<PreferenceData: 0x1149c3a0> (entity: PreferenceData; id: 0x114a7eb0 <x-coredata://03C39CC9-AC6C-4E56-BB5A-67038ACB6801/PreferenceData/p25> ; data: {\n aAddlSvcs1 = \"\";\n aAddlSvcs10 = \"\";\n aAddlSvcs11 = \"\";\n aAddlSvcs12 = \"\";\n aAddlSvcs2 = \"\";\n aAddlSvcs3 = \"\";\n aAddlSvcs4 = \"\";\n aAddlSvcs5 = \"\";\n aAddlSvcs6 = \"\";\n aAddlSvcs7 = \"\";\n aAddlSvcs8 = \"\";\n aAddlSvcs9 = \"\";\n aApptInterval = \"\";\n aDeleteOldAppts = \"-1\";\n aDoubleBooking = \"-1\";\n aHideHelpBtns = 0;\n aHourFormat12 = 0;\n aShopCloses = 1200;\n aShopOpens = 1000;\n createdHere = 1;\n deleted = 0;\n objectId = nil;\n syncStatus = 2;\n updatedAt = nil;\n})"; 
} 

如果我要同步使用FTASync我的核心数据存储,我使用mogenerator。

那么,除了“它无法完成”,这究竟是什么告诉我?我该如何解决?

更新: 这是你与模型编辑器xcdatamodel定义的一些验证规则从Xcode的数据模型督察

enter image description here

+0

只是一个想法,但这可能是因为当NSManagedObject本身有一个定义了-objectID方法的时候,你有'objectId'被定义为实体上的一个属性? – indragie

+0

另一个想法:'NSValidationErrorKey = objectId'听起来好像该属性不满足核心数据模型中定义的某些约束。例如,如果该属性不是* optional *,那么'objectId = nil'将不是有效值。 –

+0

**已更新** * objectID *位于由mogenerator生成的代码中!正如我所指出的,除非使用mogenerator,否则我不能使用FTASync。任何想法呢? – SpokaneDude

回答

1

图像:最小值/最大值,需要的关系,最小/最大字符串长度。

通过GUI插入对象时,当您尝试创建验证失败的对象时,您会看到即时反馈。但是,如果您使用代码创建或修改对象,除非尝试保存受管对象上下文,否则不会看到错误。

您可以在创建您的PreferenceData实例的代码中调用-validateForUpdate:(或-validateForInsert:或-validateForDelete :)。在构建对象时多次调用它,并且您会看到错误的位置。

+0

我会试试看,并回复你...感谢您的回复... – SpokaneDude

+0

我放弃了......看到上面的评论。感谢您花时间看这个... – SpokaneDude