J'essaie d'utiliser un Int facultatif dans le domaine et je reçois une vieille erreur, je pense.
Code
dynamic var reps: Int? = nil
Erreur
'Property cannot be marked dynamic because its type cannot be represented in Objective-C'
J'utilise Realm 0.96.1 avec XCode 7.1
Je comprends dans la documentation de Realm que le Int
n'est pas pris en charge en tant que Optional
mais https://Twitter.com/realm/status/656621989583548416 . Cela vient du Realm Twitter, c'est pourquoi je suis confus. Sont Optional Int
pris en charge ou toujours non?
Depuis les documents de Realm:
String
, NSDate
et NSData
peuvent être déclarées comme facultatives ou non facultatives en utilisant la syntaxe standard Swift.
Les types numériques facultatifs sont déclarés à l'aide de 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
prend en charge Int
, Float
, Double
, Bool
et toutes les versions de taille de Int
(Int8
, Int16
, Int32
, Int64
).
MISE À JOUR:
Les Ints optionnels mentionnés dans Tweet par Realm ne concernaient qu'un correctif de bogue pour la manière RealmOptional
d'implémenter une valeur numérique optionnelle avec les versions dimensionnées de Int
Selon pour les gars de Realm, vous devez toujours utiliser RealmOptional
si vous voulez avoir des valeurs numériques facultatives dans un objet Realm. Vous ne pouvez pas simplement l'utiliser comme d'autres types facultatifs.
Alors dynamic var reps: Int?
ne fonctionnera pas.