在Realm数据库中保存数组值

时间:2017-11-23 06:22:51

标签: ios swift realm

我使用Realm DB在iOS中保存离线数据。我可以直接将数组值保存到Realm DB而不使用for循环吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,无法执行此操作,Realm使用Lists

  

List是Realm中用于定义to-many的容器类型   关系。

     

与Swift的数组类似,List是一个参数化的泛型类型   它存储的对象类型。

class MyObject: Object {
    dynamic var name = "Default"
}

func listToArray() {
    let objectsArray = [MyObject(), MyObject(), MyObject(), MyObject(), MyObject()]
    var objectsRealmList = List<MyObject>()

    objectsRealmList = objectsArray
}

如果您正在考虑objectsRealmList = objectsArray之类的非法行为,则无法将数组分配给领域列表。

因此,与this answer中的逻辑相同,您需要遍历objectsArray

func arrayToList() {
    let objectsArray = [MyObject(), MyObject(), MyObject(), MyObject(), MyObject()]
    let objectsRealmList = List<MyObject>()

    // this one is illegal
    //objectsRealmList = objectsArray

    for object in objectsArray {
        objectsRealmList.append(object)
    }

    // storing the data...
    let realm = try! Realm()
    try! realm.write {
        realm.add(objectsRealmList)
    }
}

通常,列表将作为Object的属性,您应该添加对象本身。