web-dev-qa-db-fra.com

Int facultatif dans le domaine

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?

21
Cody Weaver

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.

43
joern