在托管对象中使用标量时出错
我在一个创建 CoreData 托管对象的应用程序中有一些代码。在此代码中,我使用以下行来设置属性:
theAuthor.authorID = 1;
该属性在托管对象标头中声明如下:
@property (nonatomic) uint32_t authorID;
在 iOS 5 中它工作正常,但是当我在 iOS 4.3 中调试时,出现此错误:
属性“authorID”是“Author”类的标量类型。无法为其生成 setter 方法。
为什么我在 4.3 中出现此错误,但在 5 中却没有?我应该避免标量属性吗?我从 C 转到 Obj-C,所以我更喜欢尽可能使用标量,因为它感觉更优化。
我是否可以更好地实现 getter 和 setter,或者更改我的代码以使用 NSInteger 或 NSNumber 来代替?
I have some code in an app that creates a CoreData managed object. In this code, I use the following line to set a property:
theAuthor.authorID = 1;
The property is declared like this in the managed object header:
@property (nonatomic) uint32_t authorID;
In iOS 5 it works fine, but when I debug in iOS 4.3, I get this error:
Property 'authorID' is a scalar type on class 'Author'. Cannot generate a setter method for it.
Why am I getting this error in 4.3, but not in 5? Should I be avoiding scalar properties? I came to Obj-C from C, so I prefer to work with scalars when I can, as it feels more optimised.
Would I be better implementing the getters and setters or changing my code to use NSInteger or NSNumber instead?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有关使用的信息,请参阅此处核心数据中的标量属性。 (顺便说一下,NSInteger 是一个标量)。清单 3 是您感兴趣的特定访问器。基本上,您需要为其编写自己的访问器,但这并不困难。
从 iOS5 开始,您可以在核心数据中使用标量属性。这可以通过在从数据模型生成托管对象子类时勾选适当的框来实现。
See here for information on using scalar attributes in core data. (By the way, NSInteger is a scalar). Listing 3 is the particular one you are interested in. Basically, you need to write your own accessor for it, but it's not difficult.
As of iOS5, you can use scalar properties in core data. This can be achieved by ticking the appropriate box when generating your managed object subclasses from the data model.