Что я пытаюсь сделать, так это получить доступ к ребенку, когда у меня есть родитель в сфере.В этом примере у меня есть простое табличное представление, которое я хочу заполнить дочерним при доступе к родительскому.Часть, с которой я борюсь, пытается найти ребенка при доступе к родителю.
Это viewController, к которому я пытаюсь получить доступ к дочерним элементам:
import UIKit
import Realm
import RealmSwift
class OtherViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var otherTableView: UITableView!
var realm: Realm!
var realmedData = ""
var realmList: Results<Realmed> {
get {
return realm.objects(Realmed.self)
}
}
var realmTwoList: Results<RealmTwo> {
get {
return realm.objects(RealmTwo.self)
}
}
override func viewDidLoad() {
super.viewDidLoad()
realm = try! Realm()
self.otherTableView.delegate = self
self.otherTableView.dataSource = self
// Do any additional setup after loading the view.
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var counted = realm.objects(RealmTwo.self).filter("realmLbl == %@", realmedData)
return counted.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "otherCell", for: indexPath) as! OtherTableViewCell
var celledItem = realm.objects(Realmed.self)
for item in celledItem {
for items in item.realmTwo {
cell.otherLbl.text = "\(items.spanish)"
}
}
return cell
}
}
это еще один метод, который я пробовал для ячейки для строки в:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "otherCell", for: indexPath) as! OtherTableViewCell
var celledItem = realm.objects(Realmed.self)
for item in celledItem {
for items in item.realmTwo {
cell.otherLbl.text = "\(items.spanish)"
}
}
return cell
}
это класс родительской области:
import Foundation
import Realm
import RealmSwift
class Realmed: Object {
@objc dynamic var label = ""
@objc dynamic var romanNum = ""
@objc dynamic var txt = ""
let realmTwo = List<RealmTwo>()
override static func primaryKey() -> String {
return "label"
}
convenience init(label: String, romanNum: String, txt: String) {
self.init()
self.label = label
self.romanNum = romanNum
self.txt = txt
}
}
, а это класс области для дочернего объекта:
import Foundation
import UIKit
import Realm
import RealmSwift
class RealmTwo: Object {
@objc dynamic var realmLbl = String()
@objc dynamic var spanish = String()
@objc dynamic var french = String()
let realmed = LinkingObjects(fromType: Realmed.self, property: "realmTwo")
convenience init(realmLbl: String, spanish: String, french: String) {
self.init()
self.realmLbl = realmLbl
self.spanish = spanish
self.french = french
}
}
Когда я запускаю все как есть, единственное, что заполняет табличное представление, этопоследнее значение, сохраненное в области.В этом примере дочерними являются строки: «Uno» и «Un», и я хочу, чтобы они оба заполняли tableView, но tableView заполняется только последним значением в области, в данном случае «Un».Благодаря исследованиям я обнаружил, что это потому, что я перебираю реальную ценность, чтобы получить ребенка.Проблема в том, что единственный способ добраться до потомка - это цикл, но тогда он не может заполнить tableView.Это похоже на проигрышную ситуацию.
Что меня интересует, так это как получить доступ к ребенку, когда у вас есть родитель в области, чтобы я мог заполнить tableView.
Если вам что-то нужно, пожалуйста, спросите.Спасибо