我使用Realm DB在iOS中保存离线数据。我可以直接将数组值保存到Realm DB而不使用for循环吗?
答案 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的属性,您应该添加对象本身。