2010-11-07 200 views

回答

1

假设您在此讨论NSManagedObject的子类,setter/getters由CoreData提供。

+0

是由模型映射自动生成的子类吗?或者我们手动创建? – Arcadian 2010-11-07 03:40:56

+0

通常,您首先创建一个实体,然后在Xcode中创建模型类时,将它指向您创建的实体并为您生成NSManagedObject的一个子类。 – 2010-11-07 04:13:56

0

两个不同的东西:

  • 如果你在谈论@dynamic在由数据建模者表示核心数据实体生成的类使用,那么实现由核心数据生成的为好。你无法访问它们。我认为你可以重写并放入自己的位置,但我没有调查过。所以一般来说不要担心它们。

  • @dynamic在您定义的类中使用(不是核心数据)意味着您将输入属性的getter和setter。在文档中有很多这些应该是什么样子的例子。一般来说,如果你不打算将属性的值存储在一个变量中,会以某种方式首先转换它,或者需要将其他一些处理挂钩到getter/setter概念中,那么只会这样做。

+0

不确定你的意思是“输入”getter/setter。但是像你所描述的自定义getter/setter并不意味着他们是@dynamic。 @dynamic意味着你在编译时根本没有提供getter/setter,但是你承诺稍后在运行时介绍它们(或者处理forward)。对于一个正常的自定义getter/setter(计算,转换,无论),你既不指定@synthesize也不指定@dynamic。 – 2010-11-07 04:19:11

+0

是的,你不需要做@syntheize或@dynamic声明。我也只是检查了目标C doco,它说“...通过直接或在运行时提供方法实现...”,这意味着你编写它们(键入)或其他机制生成它们(例如核心数据) 。如果我正在实施,我总是会放入@dynamic声明。没有理由,除了明确它。 :-) – drekka 2010-11-07 05:04:50