Первичный ключ Realm Swift не может получить правильное значение

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

Например:

А. Свифт


    @objcMembers class A: Object, Codable{
        var id: Int64 = 0
        dynamic var otherProperty: String?

        private enum CodingKeys: String, CodingKey {
            case id
            case otherProperty
        }

        override static func primaryKey() -> String{
            return "id"
        }
    }

Допустим, у нас есть класс А, как показано в приведенном выше примере. Когда я добавляю объект A в базу данных Realm с заданными идентификатор = 10 и другое свойство = "другое свойство", он сохраняется правильно. Я даже вижу это с помощью Realm Browser.

Теперь я пытаюсь использовать следующий код:


    let realm = try! Realm()
    let aObj = realm.objects(A.self).first
    print(aObj!.id) //printing 0
    print(aObj!.otherProperty) //printing "other property"

Проблема здесь, очевидно, в том, что я не получаю в aObj значение идентификатор = 10, как я ожидал.

Я попытался отладить его, чтобы увидеть, в чем проблема, и там происходит самое странное. po aObj правильно напечатает мой объект:


    Optional<A>
       some: A{
          id = 10;
          otherProperty = "other property"
    }

Однако, если я попытаюсь распечатать только идентификатор, поэтому, если я запущу команду po aObj!.id, я получу следующий результат:


    Optional<Int64>
      - some : 0

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сделайте свой идентификатор динамическим

dynamic var id: Int64 = 0

realm.add(A(value: ["id": 10, "otherProperty": "otherProperty"]) , update: true)

print("aObj?.id") //printing 10

Другие вопросы по теме