Swift Realm - «Значение типа« Results »не имеет члена» - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь получить данные из RealmDB и отфильтровать их по идентификатору. Как предлагает документация Realm (https://realm.io/docs/swift/latest/#queries), я использую:

    let realm = try! Realm()
    let Result = realm.objects(DBName.self).filter("ID == %@", id) 

XCode не показывает никаких предупреждений или ошибок в этих двух строках, но при попытке использовать выполнив следующие действия:

    print(Result.ID)

Даже имея поле идентификатора в базе данных, вы получите ошибку: Value of type 'Results<DBName>' has no member 'ID'. И я также не могу получить доступ к любому другому полю.

1 Ответ

1 голос
/ 03 февраля 2020
realm.objects(DBName.self).filter("ID == %@", id)

Возвращает все DBName объекты, у которых ID равно id в Results [doc] . Итак, возвращаемое значение - это список объектов. Вот почему ошибка говорит: 'Results<DBName>' has no member 'ID'.

Если вы на 100% уверены, что у вас есть один объект, вы можете попытаться получить первый элемент таким способом. (Для производства вы всегда должны использовать оператор guard, чтобы предотвратить взлом sh, как предлагает Джей в разделе комментариев.)

realm.objects(DBName.self).filter("ID == %@", id).first!

Или, если ваш ID является первичным ключом, вы может сделать это.

realm.object(ofType: DBName.self, forPrimaryKey: id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...