2015-10-26 2 views
13

Я пытаюсь использовать опциональный Int в Realm, и я получаю старую ошибку, я думаю.Необязательный Int в Realm

Код

dynamic var reps: Int? = nil 

Ошибка

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

Я использую Realm 0.96.1 с XCode 7.1

Я понимаю, в документации Realm это говорит Int ISN» t поддерживается как Optional, но https://twitter.com/realm/status/656621989583548416. Это из-за Twitter, поэтому я смущен. Поддерживаются ли Optional Int или еще нет?

+0

Вы обновили Королевство? Кроме того, вы используете Cocoapods? Вы уверены, что используете 0.96.1? –

+0

Да, я использую CocoaPods. Realm 0.96.1 и RealmSwift 0.96.1 –

+0

Попробуйте использовать Int16, 32 или 64. Я смотрю на документы, и он говорит, что они поддерживают только те, что указаны в 0.96.1. Вы используете ветвь Swift 2.0, верно? –

ответ

26

из области документы:

String, NSDate и 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 поддерживает Int, Float, Double, Bool, и все размерных версий Int (Int8, Int16, Int32, Int64).

UPDATE:

Факультативного Ints, которые были упомянуты в Tweet по Realm просто о устранении ошибки для RealmOptional пути реализации необязательного числового значения с размером версий Int

According в ребятам из Realm вам все равно придется использовать RealmOptional, если вы хотите иметь дополнительные числовые значения в объекте Realm. Вы не можете просто использовать его, как и другие необязательные типы.

So dynamic var reps: Int? не будет работать.

+0

Я видел, что в документах, которые я думал в версии 0.96.1, также поддерживался Int. Я думаю, что эти документы для 0.96 –

+0

Я только что обновил до RealmSwift 0.96.2, и он по-прежнему получает то же сообщение об ошибке, которое вы описываете при попытке определить Int как необязательный. В примечаниях к выпуску для версии 0.96.1 говорится: «Исправить ошибку при использовании дополнительных свойств Int16/Int32/Int64 в Swift». Они называют это исправлением ошибки, а не новой функцией. ИМХО добавит «реальный» дополнительный Int, который станет новой функцией. Так что, я думаю, вам все равно придется использовать 'RealmOptional' – joern

+0

. То же самое и с' Int32'. – joern

Смежные вопросы