2015-10-26 13 views
13

Sto provando a utilizzare un Int Opzionale in Realm e sto ricevendo un vecchio errore, credo.Int. Opzionale in Real

Codice

dynamic var reps: Int? = nil 

errore

'Property cannot be marked dynamic because its type cannot be represented in Objective-C' 

Sto usando Realm 0.96.1 con XCode 7.1

Capisco nella documentazione Reame dice il Int isn' t supportato come Optional ma https://twitter.com/realm/status/656621989583548416. Questo è dal regno di Twitter, ecco perché sono confuso. Sono supportati Optional Int o no?

+0

Hai aggiornato il Regno? Inoltre, stai usando Cocoapods? Sei sicuro di usare 0.96.1? –

+0

Sì, sto usando CocoaPods. Realm 0.96.1 e RealmSwift 0.96.1 –

+0

Prova ad usare un Int16, 32 o 64. Sto guardando i documenti e dice che supportano solo quelli in 0.96.1. Stai usando il ramo Swift 2.0, giusto? –

risposta

26

Dalla documentazione Realm:

String, NSDate, e NSData proprietà possono essere dichiarate come optional o non-opzionale utilizzando la sintassi Swift standard.

tipi numerici opzionali vengono dichiarate utilizzando RealmOptional:

class Person: Object { 
    // Optional string property, defaulting to nil 
    dynamic var name: String? = nil 

    // Optional int property, defaulting to nil 
    // RealmOptional properties should always be declared with `let`, 
    // as assigning to them directly will not work as desired 
    let age = RealmOptional<Int>() 
} 

let realm = try! Realm() 
try! realm.write() { 
    var person = realm.create(Person.self, value: ["Jane", 27]) 
    // Reading from or modifying a `RealmOptional` is done via the `value` property 
    person.age.value = 28 
} 

RealmOptional supporta Int, Float, Double, Bool, e tutte le versioni di dimensioni di Int (Int8, Int16, Int32, Int64).

UPDATE:

gli INT opzionali che sono stati menzionati nella Tweet dal regno erano appena riguardante un bugfix per la RealmOptional modo di attuare un valore numerico opzionale con le versioni di dimensioni di Int

According a i ragazzi di Realm devono ancora usare RealmOptional se si desidera avere valori numerici facoltativi in ​​un oggetto Realm. Non puoi semplicemente usarlo come altri tipi Opzionali.

Quindi dynamic var reps: Int? non funziona.

+0

Ho visto che nei documenti pensavo solo in 0.96.1 anche Int era supportato. Penso che quei documenti siano per 0.96 –

+0

Ho appena aggiornato a RealmSwift 0.96.2 e continua a ricevere lo stesso messaggio di errore che descrivi quando provi a definire un Int come Opzionale. Nelle note di rilascio per 0.96.1 si dice "Risolto il crash quando si utilizzano le proprietà Int16/Int32/Int64 facoltative in Swift.". Lo chiamano solo un bug fix, non una nuova funzionalità. IMHO aggiungendo "reale" Opzionale sarebbe una nuova funzionalità. Quindi suppongo che tu debba ancora usare 'RealmOptional' – joern

+0

Lo stesso errore con' Int32' a proposito. – joern