我对存储普通" int"有一些疑问。或"短" (int16_t)属性在"核心数据"数据管理框架(在我的案例中,在iOS 6上)。 我试着以各种方式使用它,并发现无法做到,没有上述异常。现在,几周后,我在StackOverflow中发现了这篇文章,看起来有人确实如此:
请参阅以下示例,以便在#34; Daniel Eggert"的较低答案中存储枚举: Best way to implement Enums with Core Data
这里看起来好像他使用普通的" int16_t"并将其映射到核心数据"进入"整数16"在数据模型中......这真的有效吗?我完全按照规定进行了尝试(即使使用相同的命名:-))并且它以众所周知的" EXC_BAD_ACCESS"例外......如预期的那样。
对此有什么看法?我是否误解了相关的答案?
----编辑:--- 有趣的是有人如何评价这个问题(甚至正确地链接另一个问题),但没有答案?!无论如何:
我现在尝试使用"事件" Apple的示例应用程序,它的工作原理。 我自己的测试仍然不起作用。应用程序之间的主要区别:
我自己的实体(托管对象): H:
@interface TestEntity : NSManagedObject
{
}
@property (nonatomic) int64_t testAttribute;
@end
米:
@dynamic testAttribute;
模型数据类型:"整数64"。
other.m:
TestEntity *testEntity = (TestEntity *)[NSEntityDescription insertNewObjectForEntityForName:@"Trip" inManagedObjectContext:[GenericDAO getManagedContext]];
[testEntity setTestAttribute : 4]; //this triggers the exception
答案 0 :(得分:0)
在上周详细讨论整个问题之后,我发现使用iOS 6和最新的XCode(在我的情况下为4.6.2)我可以完全按照我的问题中提到的链接中的指定完成所有操作。我所看到的问题与一组技术细节有关,这些细节根本没有记录。我是怎么知道的?我只是执行以下步骤来验证我的实体:
要检查原始项目,请在原始项目中执行此操作,在我的案例中,Core-Data甚至菜单项看起来都不同(某些选项显示为灰色):
其他重要提示:您可以在Core-Data数据模型编辑器中选择属性并在项目之间复制/粘贴它们。如果您想要迁移某些实体/属性进行测试,这非常方便。不要只复制整个“cxdatamodeld”设置文件,它保留旧项目的设置(我尝试了两次以验证它)。
答案 1 :(得分:0)
检查是否为Core Data Model文件中的所有实体正确设置了Name,Class和Parent Entity。检查所有类名是否与实体名称匹配。出现问题的原因是在编译模型时,它没有找到带有setter的头文件。