领域:Swift`let`属性不能标记为动态

时间:2016-01-16 06:04:41

标签: swift realm

我正在使用Xcode 7.2,Swift 2.1.1。我在

下面有一个Realm模型对象
class B: Object {
    dynamic let lists = List<A>() 
}

但是Swift编译器给我一个错误说:

  

无法将属性标记为动态,因为其类型无法在Objective-C

中表示

我看到Realm的文档说:

  

Realm模型属性需要动态var属性,以便这些属性成为底层数据库数据的访问者。

     

这有两个例外:List和RealmOptional属性   不能声明为动态,因为通用属性不能   在Objective-C运行时中表示,用于动态   调度动态属性,并且应始终使用let

声明

但是声明let现在似乎并没有解决这个问题。我错过了什么?

1 个答案:

答案 0 :(得分:3)

您引用的文档包括以下内容(强调我的):

  

列表和RealmOptional属性不能声明为动态,因为通用属性不能在Objective-C运行时[...]中表示,并且应始终使用let声明。

这意味着您的财产应该如下声明:

let lists = List<A>()

Realm Swift文档最近获得了property declaration cheatsheet,希望能够澄清不同类型声明的要求。