2016-12-19 5 views
3

У меня странная проблема с объектами в Царстве. Когда я получаю объект из базы данных Realm, иногда некоторые его поля (это происходит только на RealmOptionals) равны нулю после доступа к ним.Поля Realm Object ноль иногда

Но это действительно странно, потому что, если я поставил точку останова перед доступом к этим полям, и я выполнил po object.field по адресу lldb, после этого поля nil исчезли. Я видел, что, может быть, я забыл установить эти поля как «буйнаксим», но в моем случае, и, следуя документам Realm, я должен использовать RealmOptional для необязательных логических элементов.

Кто-нибудь знает, в чем проблема?

Заранее спасибо.

EDIT: Метод, который я использовал для извлечения и объект из Realm является:

func getObject(atPosition position:Int)->Object{ 
     let objects = realm.objects(Object.self) 
     return objects[position] 
    } 

ответ

2

Я не совсем уверен, что вы просите. Если свойство Realm отмечено необязательным, то его начальное значение будет nil, как и ожидалось.

Вы правы в том, что вам нужно использовать let propertyValue = RealmOptional<Bool>() вместо dynamic, так как обычные типы данных типа boolean не могут выразить значение nil самостоятельно. Таким образом, это исключение из правила свойств dynamic.

быть также известно, что вам нужно использовать optional.value для установки дополнительного булево значение в:

class Dog: Object { 
    dynamic var name = "" 
    dynamic var age = 0 
    let vaccinated = RealmOptional<Bool>() 
} 

let realm = try! Realm() 

let myDog = Dog() 
myDog.name = "Sherlock Bones" 
myDog.age = 4 
myDog.vaccinated.value = true 

try! realm.write { 
    realm.add(myDog) 
} 
+0

Я только заметить, что это не только с RealmOptional, но с динамическими строками тоже. Я обновил вопрос с помощью фрагмента кода, в котором я извлекаю элемент из Realm. Большое спасибо TiM за то, что помогли мне в обоих вопросах. Вы и команда Королевства f *** ing awesome! – kikettas

+0

Я отредактировал ваш ответ, потому что вы поставили меня в правильном направлении. Спасибо за ваше время, я ценю вашу помощь. – kikettas

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