Search code examples
iosswift3realm

Realm one to many


Some days ago that's no problem ,but recently it doesn't work.

import UIKit
import RealmSwift

class Dog: Object {

    dynamic var name = ""
    dynamic var age = 3

}

import UIKit
import RealmSwift

class People: Object {

    dynamic var name = ""
    dynamic var age = 3
    var dogs = List<Dog>()

}

import UIKit
import RealmSwift

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let dog1 = Dog()
        dog1.age = 1
        dog1.name = "旺财"
        let dog2 = Dog()
        dog2.age = 3
        dog2.name = "大黄"

        let p = People()
        p.age = 24
        p.name = "小明"
        let dogs = List<Dog>()
        dogs.append(dog1)
        dogs.append(dog2)

        let realm = try! Realm()
        try! realm.write {

            realm.add(p)
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

Solution

  • Dog must contain property People?. From tutorial

    import RealmSwift
    
    // Dog model
    class Dog: Object {
        dynamic var name = ""
        dynamic var owner: Person? // Properties can be optional
    }
    
    // Person model
    class Person: Object {
        dynamic var name = ""
        dynamic var birthdate = Date(timeIntervalSince1970: 1)
        let dogs = List<Dog>()
    }