从Realm Results转换为Array会产生空对象

时间:2017-05-04 15:16:55

标签: ios arrays swift type-conversion realm

当我尝试从Results转换为Swift Array时,属性是默认值。

所以我想说我写一个Request这样的对象:

let realm = try! Realm()
try! realm.write {
    realm.add(request, update: true)
}

然后当我从Realm这样读它们时:

 let realm = try! Realm()
 let requestsFromRealm = realm.objects(Request.self)

我的结果很好。我需要将Results对象转换为Array。我做到了:

let requests = Array(requestsFromRealm)

请求对象在那里,但属性是默认值。奇怪的是,当我用po检查控制台上的值时,我可以看到它们。

2 个答案:

答案 0 :(得分:3)

试试这个:

let realm = try! Realm()
let requestsFromRealm = realm.objects(Request.self)
let requests = requestsFromRealm.toArray()

使用此扩展程序:

extension Results {

    func toArray() -> [T] {
        var array = [T]()
        for result in self {
            array.append(result)
        }
        return array
    }
}

答案 1 :(得分:0)

let requests = Array (requestsFromRealm)

我认为此代码没有问题。

Realm Object的属性中是否缺少“动态”?

class Request: Object {
     dynamic var body: String = ""
}