【发布时间】:2013-05-15 06:39:31
【问题描述】:
我对在“核心数据”数据管理框架内存储普通的“int”或“short”(int16_t)属性(在我的情况下是 iOS 6)有一些疑问。 我尝试以各种方式使用它,但发现无法做到,并因上述异常而失败。现在,几周后,我在 StackOverflow 中找到了这篇文章,看起来有人就是这样做的:
请参阅以下示例以将枚举存储在“Daniel Eggert”的较低答案中: Best way to implement Enums with Core Data
这里看起来好像他使用了一个普通的“int16_t”并将其映射到数据模型中的一个“核心数据”条目“整数 16”......这真的有效吗?我完全按照说明进行了尝试(即使使用相同的命名 :-)),但由于众所周知的“EXC_BAD_ACCESS”异常而失败......正如预期的那样。
对这个有什么想法吗?我是否误解了链接的答案?
---- 编辑:--- 有趣的是有人如何评价这个问题(甚至正确链接另一个问题),但没有答案?!无论如何:
我现在对 Apple 的“事件”示例应用程序进行了同样的尝试,它可以正常工作。 我自己的测试还是不行。应用程序之间的主要区别:
- 我的托管类不是自动生成的,我重用了现有的类
- 我现有的类中仍有一些带有“@synthesize”的属性
我自己的实体(托管对象): h:
@interface TestEntity : NSManagedObject
{
}
@property (nonatomic) int64_t testAttribute;
@end
米:
@dynamic testAttribute;
模型数据类型:“整数 64”。
其他.m:
TestEntity *testEntity = (TestEntity *)[NSEntityDescription insertNewObjectForEntityForName:@"Trip" inManagedObjectContext:[GenericDAO getManagedContext]];
[testEntity setTestAttribute : 4]; //this triggers the exception
【问题讨论】:
-
你能发布你的代码吗?我已经使用链接中的代码没有问题
-
这个答案看起来不错,如果它不适合您,请发布一些代码,以便我们了解您是如何实现它的。
-
是自动生成的代码吗?我猜真正的对象是期待一个 NSNumber...
-
确实,如果我使用 NSNumber,那么它可以工作。然而,当我使用 Apple 文档随附的原始示例应用程序时,我可以使这样的属性工作......并且链接的文章也表明这应该工作。我想有一个不那么明显的小故障:)。
-
我没有说你的代码应该可以工作,我说其他答案中的代码可以工作。我还不知道到底有什么不同。对于触发异常的行,您是否收到任何编译器警告?我也怀疑“我重用了现有的课程”。我猜您现有的课程与您的实体不匹配。
标签: ios objective-c cocoa-touch core-data