2016-01-16 4 views
5

Sto usando Xcode 7.2, Swift 2.1.1. Ho un oggetto modello di Reame sottoRealm: la proprietà `let` di Swift non può essere contrassegnata come dinamica

class B: Object { 
    dynamic let lists = List<A>() 
} 

Ma il compilatore Swift mi dà un errore dicendo:

proprietà non può essere contrassegnato come dinamica, perché il suo tipo non può essere rappresentato in Objective-C

ho visto la documentazione del Reame che dice:

proprietà modello Realm bisogno del dy attributo namic var per consentire a queste proprietà di diventare accessor per i dati del database sottostante.

Ci sono due eccezioni a questo: elenco e le proprietà RealmOptional non possono essere dichiarati come dinamica perché le proprietà generiche non possono essere rappresentati nel runtime Objective-C, che viene utilizzato per la dinamica spedizione delle proprietà dinamiche, e devono essere sempre dichiarato con let

Ma dichiarando let non sembra risolvere il caso ora. Cosa mi manca?

risposta

3

La documentazione che hai citato include quanto segue (sottolineatura mia):

List e le proprietà RealmOptional non possono essere dichiarate come dinamica perché le proprietà generiche non possono essere rappresentati nel runtime Objective-C, [...], e dovrebbe sempre essere dichiarato con let.

Questo significa che il proprietà deve essere dichiarato in questo modo:

let lists = List<A>() 

La documentazione Swift Reame recentemente guadagnato una property declaration cheatsheet che chiarisce spera i requisiti per i diversi tipi di dichiarazioni.

+0

: D * testa a battente * – tropicalfish