Realm Integer терпит крах проекта - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь добавить целочисленные значения в мое приложение, но приложение просто падает.

Это класс Object:

import Foundation
import RealmSwift

class Workout: Object {

    @objc dynamic var date: Date?
    @objc dynamic var exersice: String?
    @objc dynamic var sets = 0
    @objc dynamic var reps = 0
    @objc dynamic var kg = 0
    @objc dynamic var notes: String?

}

И вот как я пишу это

    let currenDate = Date()

    let realm = try! Realm()

    var myWorkout = Workout()
    myWorkout.date = currenDate
    myWorkout.exersice = "Squat"
    myWorkout.sets = 3
    myWorkout.reps = 6
    myWorkout.kg = 70
    myWorkout.notes = "test note"

    try! realm.write {
        realm.add(myWorkout)
    }

Есть идеи?Я следовал точной документации: https://realm.io/docs/swift/latest#getting-started

РЕДАКТИРОВАТЬ: Вот что происходит, когда я запускаю проект: Изображение здесь

И если я нажимаю 10 ViewController.viewDidLoad()на левой стороне, это показывает мне это: Изображение здесь

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

На будущее: попробуй!означает «Я на сто процентов уверен, что не будет никаких исключений, пожалуйста, сбой, если таковой имеется».Какой твой код тогда сделал.Лучше использовать try / catch, чтобы вы могли видеть, какое исключение выдается.Это очень, очень редко, что пытаются!верно.

0 голосов
/ 09 февраля 2019

Ошибка миграции.

Большинство из них можно решить, просто обновив schemaVersion .

Область .ваш модальный режим изменился и решает для вас основные проблемы.

Если ваши модальные изменения были более сложными и должны поддерживать обратную совместимость, вам придется объяснить realm , как выполнить миграцию.

Простой способ сделать это - использовать собственный getRealm вместо общего экземпляра по умолчанию:

func getRealm() -> Realm {
  var config = Realm.Configuration(
      // Set the new schema version. This must be greater than the previously used
      // version (if you've never set a schema version before, the version is 0).
      schemaVersion: 2, // This is the number you should update!

      // Set the block which will be called automatically when opening a Realm with
      // a schema version lower than the one set above
      migrationBlock: { migration, oldSchemaVersion in
          // We haven’t migrated anything yet, so oldSchemaVersion == 0
          if (oldSchemaVersion < 1) {
              // Nothing to do!
              // Realm will automatically detect new properties and removed properties
              // And will update the schema on disk automatically
          }
  })

  do {
      return try Realm.init(configuration: config)
  } catch {
      return try! Realm.init(configuration: config)
  }
}

Объяснение простой миграции: https://medium.com/@shenghuawu/realm-lightweight-migration-4559b9920487

0 голосов
/ 09 февраля 2019

Вы изменили модель Workout , поэтому область выдает ошибки. Миграция требует ошибок.

Попробуйте удалить приложение и снова установить его с устройства / симулятора или узнайте, как выполнить миграцию вобласть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...