Как заставить RealmSwift работать с Xcode 11? - PullRequest
0 голосов
/ 07 января 2020

Я пытался начать с Realm (версия 4.3.0) в качестве опции базы данных с Xcode 11. С моими навыками поиска в Google я не мог получить ответ на свои проблемы. Я пытался использовать Официальную документацию Realm , но похоже, что они не работают с Xcode 11. Basi c код:

import UIKit
import RealmSwift

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    class Test: Object {
        @objc dynamic var text = ""
        @objc dynamic var internalId = 0
    }

    let newTest = Test()
    newTest.text = "Text" // Errors happen here



    print("text: \(newTest.text)")

}

Я получаю ошибок, которых я определенно не ожидал:

  • Последовательные объявления в строке должны быть разделены знаком ';'
  • Ожидается '(' в списке аргументов объявления функции
  • Ожидаемое '{' в теле объявления функции
  • Ожидаемое ключевое слово 'fun c' в объявлении метода экземпляра
  • Ожидаемое объявление
  • Недопустимая переопределение функции newTest ()

Также, когда я пытаюсь инициализировать и написать в Realm с:

let realm = try! Realm()

try! realm.write { // Error here
   realm.add(newTest)
}

Я получаю ошибку «Ожидаемое объявление»

Из чего я Читал, Realm кажется действительно хорошим вариантом базы данных для iOS, но с этими проблемами я не могу начать работу. Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 07 января 2020

Как @ 108g прокомментировал: я пытался создать экземпляр на уровне класса. Поэтому я переместил создание, изменение и печать в метод viewDidLoad (). Затем я переместил свой класс Test в новый файл.

Итак, код, который работает: ViewController.swift

import UIKit
import RealmSwift

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        let newTest = Prompt()
        newTest.text = "Text"

        print("text: \(newTest.text)")


        let realm = try! Realm()

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

И RealmTest.swift (новый файл)

import Foundation
import RealmSwift

class Prompt: Object {
    @objc dynamic var text = ""
    @objc dynamic var internalId = 0
}
1 голос
/ 07 января 2020

Давайте изменим код, чтобы объекты и функции были на своих местах.

import UIKit
import RealmSwift

//this makes the class available throughout the app
class Test: Object {
   @objc dynamic var text = ""
   @objc dynamic var internalId = 0
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()


       //create a new realm object in memory
       let newTest = Test()
       newTest.text = "Text"

       print("text: \(newTest.text)")

       //persist the object to realm
       let realm = try! Realm()
       try! realm.write {
          realm.add(newTest)
       }

       //or read objects
       let results = realm.objects(Test.self)
       for object in results {
          print(object.text)
       }

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