web-dev-qa-db-ja.com

レルムのオプションのInt

RealmでOptional Intを使用しようとしていますが、古いエラーが発生しています。

コード

dynamic var reps: Int? = nil

エラー

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

XCode 7.1でRealm 0.96.1を使用しています

Realmのドキュメントでは、IntOptionalとしてサポートされていませんが、 https://Twitter.com/realm/status/656621989583548416 であると理解しています。それはRealmのTwitterからですので、私は混乱しています。 Optional Intサポートされているか、まだサポートされていませんか?

20
Cody Weaver

Realmドキュメントから:

StringNSDate、およびNSDataプロパティは、標準のSwift構文を使用して、オプションまたは非オプションとして宣言できます。

オプションの数値型は、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は、IntFloatDoubleBool、およびIntInt8Int16Int32Int64)。

UPDATE:

Tweet でRealmが言及したOptional Intsは、RealmOptionalのサイズ付きバージョンでOptional数値を実装するInt方法のバグ修正に関するものでした。

According Realmのメンバーには、Realmオブジェクトにオプションの数値を含める場合は、RealmOptionalを使用する必要があります。他のオプションタイプのように単純に使用することはできません。

そう dynamic var reps: Int? 動作しないでしょう。

40
joern