领域反向关系支持使用字典值进行创建

时间:2017-01-07 05:01:06

标签: ios swift realm relationships

我希望通过词典实现Realm inverse-relationships对创作的支持。

但断言失败了:字典中的狗没有创建。

foo %>%
   group_by(ID, Day) %>% 
   filter(n_distinct(Period)>1)  %>% 
   mutate_if(is.factor, as.character) %>%
   filter(Start[1]==End[n()] & Start[n()] == End[1]) 
#     ID   Day  Period        Start          End
#   <int> <int>   <chr>        <chr>        <chr>
#1    54     1 morning Union Square    Chinatown
#2    54     1 evening    Chinatown Union Square
#3    88     2 morning    Grammercy Battery Park
#4    88     2 evening Battery Park    Grammercy

注意:RealmSwift(2.1.2)

2 个答案:

答案 0 :(得分:1)

LinkingObjects是一种查找机制,而不是磁盘存储的实际表示。因此,无法通过写入事务将数据插入其中。

但是,如果您重新设计架构,PersonListDog个对象,Dog本身定义LinkingObjects来确定其父级,那么在同一个字典中插入PersonDog的代码应该有效。 :)

class Dog: Object {
    dynamic var name: String?
    let owners = LinkingObjects(fromType: Person.self, property: "dogs")
}

class Person: Object {
    dynamic var name: String?
    let dogs = List<Dog>()
}

答案 1 :(得分:0)

我找到的解决方法是分别创建每个实体。

try? realm.write {
    person = realm.create(Person.self, value: sampleValue, update: false)
    let dogsValue = sampleValue["dogs"] as? [[String: Any]]
    dogsValue?.forEach {
        var dogValue = $0
        dogValue["owner"] = person
        realm.create(Dog.self, value: dogValue, update: false)
    }
}

我希望有一些更简单的方法。