我有一个数组,这很简单:[ [String: AnyObject] ]
。这只是一个常规的JSON对象。数组中的所有对象都是相同类型的对象。我的字典看起来像这样:
[ { "firstName" : "Joe", "lastName": "Smith"}, {"firstName": "John", "lastName" : "Jones"} ]
My Realm对象的定义如下:
public class Person : Object {
public dynamic var firstName = ""
public dynamic var lastName = ""
}
我想将此JSON转换为List<Person>
理想情况下,我想做这样的事情:
let personList: List<Person> = unknown(arrayOfPersonDictionaries)
我意识到我可以构建一个循环来遍历arrayOfPersonDictionaries
中的每个对象,并在每个对象上创建一个Realm对象。我只是想知道是否有更方便的方法来做到这一点。
答案 0 :(得分:1)
您描述了希望List<Person>
作为返回类型。此类型用于管理Realm Swift中的关系。
所以如果你有另一个对象类,例如House
residents
与关系class House : Object {
let residents = List<Person>()
}
try! realm.write {
let people = [ { "firstName" : "Joe", "lastName": "Smith"}, {"firstName": "John", "lastName" : "Jones"} ]
let house = realm.create(House.self, value: [ "residents": people ])
}
,您只需创建一个对象,其中包含与您相关的词典数组中的所有人员,其中包含以下内容:
try! realm.write {
let arrayOfPersonDictionaries = [ { "firstName" : "Joe", "lastName": "Smith"}, {"firstName": "John", "lastName" : "Jones"} ]
let people = arrayOfPersonDictionaries.map { realm.create(Person.self, value: $0) }
}
如果您只想为持久对象列表获取合适的集合,可以通过类似的方式实现:
Array<Person>
这将返回class A {
string name;
int age;
string gender;
//assuming all the constructors, getters and setters are present
}
。
答案 1 :(得分:0)
如果您创建了一个包含List<Person>
的类,那么您只需要存储一个包含完整列表的Realm对象。
要填充列表,您必须遍历arrayOfPersonDictionaries
以填充personList
,但只需要一次数据库保存