2015-10-26 6 views
13

Ich versuche, eine optionale Int in Realm zu verwenden und bekomme einen alten Fehler, denke ich.Optional Int in Realm

-Code

dynamic var reps: Int? = nil 

Fehler

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

Ich verwende Realm 0.96.1 mit XCode 7.1

ich im Reich Dokumentation verstehen es sagt der Int isn‘ t unterstützt als Optional aber https://twitter.com/realm/status/656621989583548416. Das kommt aus dem Reichzwitschern, deshalb bin ich verwirrt. Werden Optional Int unterstützt oder immer noch nicht?

+0

Haben Sie Realm aktualisiert? Benutzt du auch Cocoapoden? Sind Sie sicher, dass Sie 0.96.1 verwenden? –

+0

Ja, ich verwende CocoaPods. Realm 0.96.1 und RealmSwift 0.96.1 –

+0

Versuchen Sie es mit Int16, 32 oder 64. Ich schaue mir die Dokumente an und sie sagen, dass sie nur die in 0.96.1 unterstützen. Du benutzt den Swift 2.0-Zweig, richtig? –

Antwort

26

aus dem Reich docs:

String, NSDate und NSData Eigenschaften kann als optional oder nicht optional mit der Standard-Swift Syntax deklariert werden.

Optional numerische Typen verwenden RealmOptional erklärt:

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 unterstützt Int, Float, Double, Bool, und alle die Größe Versionen von Int (Int8, Int16, Int32, Int64).

UPDATE:

Das Fakultativ Ints, die im Tweet von Realm erwähnt wurden, wurden nur ein Bugfix für die RealmOptional Art und Weise in Bezug auf von Int

According einen optionalen numerischen Wert mit den geschlichteten Versionen der Umsetzung zu Die Jungs aus Realm müssen immer noch RealmOptional verwenden, wenn Sie optionale numerische Werte in einem Realm-Objekt haben wollen. Sie können es nicht einfach wie andere optionale Typen verwenden.

So dynamic var reps: Int? wird nicht funktionieren.

+0

Ich sah das in den docs dachte ich nur in 0.96.1 Int wurde auch unterstützt. Ich denke diese Dokumente sind für 0.96 –

+0

Ich habe gerade aktualisiert RealmSwift 0.96.2 und es wird immer noch die gleiche Fehlermeldung, die Sie beschreiben, wenn Sie versuchen, ein Int als Optional zu definieren. In den Versionshinweisen für 0.96.1 heißt es "Absturz beheben, wenn optionale Int16/Int32/Int64-Eigenschaften in Swift verwendet werden.". Sie nennen es nur einen Bugfix, keine neue Funktion. IMHO hinzufügen "real" Optional Int wäre eine neue Funktion. Also, ich denke, Sie müssen immer noch die 'RealmOptional' – joern

+0

Selben Fehler mit' Int32' übrigens. – joern