Загрузить все объекты в переменную результатов (Realm iOS) - PullRequest
0 голосов
/ 13 июля 2020

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

Предзагруженная база данных со списками улиц Эти данные хранятся в /Database/streetListings.realm

import UIKit
import RealmSwift

class StreetListing: Object {
  
  @objc dynamic var houseNumber: String?
  @objc dynamic var streetName: String = ""
  @objc dynamic var trashDay: String = ""
  
  convenience init(houseNumber: String?, streetName: String, trashDay: String) {
    self.init()
    self.houseNumber = houseNumber
    self.streetName = streetName
    self.trashDay = trashDay
  }
}

import UIKit
import RealmSwift

class ViewController: UIViewController {
  
  var realm: Realm!
  var streetListings: Results<StreetListing>?
  
  override func viewDidLoad() {
    super.viewDidLoad()
    
    let realmPath = Bundle.main.url(forResource: "streetListings", withExtension: "realm")!
    let realmConfiguration = Realm.Configuration(fileURL: realmPath, readOnly: true)
    realm = try! Realm(configuration: realmConfiguration)
    streetListings = realm.objects(StreetListing.self)
  }
}
(lldb) po realmPath
▿ file:///Users/raz/Library/Developer/CoreSimulator/Devices/3A4F3C1A-9C15-4AF0-B211-5125E3843075/data/Containers/Bundle/Application/B1331B06-EDFE-494C-A170-7FDB1B2CA291/NorthTrash.app/streetListings.realm
  - _url : file:///Users/raz/Library/Developer/CoreSimulator/Devices/3A4F3C1A-9C15-4AF0-B211-5125E3843075/data/Containers/Bundle/Application/B1331B06-EDFE-494C-A170-7FDB1B2CA291/NorthTrash.app/streetListings.realm

(lldb) print realmConfiguration
(RealmSwift.Realm.Configuration) $R32 = {
  _syncConfiguration = nil
  _path = "/Users/raz/Library/Developer/CoreSimulator/Devices/3A4F3C1A-9C15-4AF0-B211-5125E3843075/data/Containers/Bundle/Application/B1331B06-EDFE-494C-A170-7FDB1B2CA291/NorthTrash.app/streetListings.realm"
  _inMemoryIdentifier = nil
  encryptionKey = nil
  readOnly = true
  schemaVersion = 0
  migrationBlock = nil
  deleteRealmIfMigrationNeeded = false
  shouldCompactOnLaunch = nil
  maximumNumberOfActiveVersions = nil
  customSchema = nil
  disableFormatUpgrade = false
}


(lldb) po streetListings
▿ Optional<Results<StreetListing>>
  ▿ some : Results<StreetListing> <0x7fbd2e607140> (

)
    - rlmResults : RLMResults<StreetListing> <0x7fbd2e607140> (

)

Если кто-нибудь может мне помочь с этим, это было бы здорово. Спасибо!

Ответы [ 3 ]

0 голосов
/ 13 июля 2020

Загрузка большого количества объектов может занять время. Попробуйте набрать streetListings после задержки. Не уверен, зачем вам нужна база данных только для чтения. Если нет, вы можете использовать NotificationToken для прослушивания изменений, внесенных в базу данных области.

0 голосов
/ 15 июля 2020

Мне удалось заставить это работать. Я изменил свой собственный класс с streetListings на StreetListings. Также был создан новый проект Xcode и перенесены все существующие файлы.

0 голосов
/ 13 июля 2020

Я также работал над Realm Project. Вот простой совет по загрузке всего объекта.

 let realm = try? Realm()
       let personData = realm?.objects(Person.self)
      //write code for loading personData
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...