2015-10-27 67 views

回答

11

领域模型类自动实现访问底层数据库数据的持久性属性的getter和setter。为了提供这些getter和setter,必须使用dynamic修饰符声明您的属性。这个修饰符让Swift通过getters和setter动态地分配对属性的访问,而不是在编译时直接访问成员。 dynamic修饰符带有一个重要限制:它仅支持可在Objective-C中表示的类型。这是因为Swift的动态调度是建立在Objective-C运行时的基础之上的。正是这个限制可以防止Realm直接支持Int?

您可能想知道如何支持String?,NSData?NSDate?考虑到此限制。答案是它们在Objective-C中有自然等价物,即nullable NSString *,nullable NSData *nullable NSDate *。 Swift的数字类型不存在这样的等价物。

相关问题