2017-05-04 42 views
0

当我尝试从结果转换为Swift数组时,属性处于默认值。从领域结果转换为阵列产生空对象

所以我们可以说我写一个Request对象是这样的:

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

然后,当我从阅读境界他们是这样的:

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

我得到的结果就好了。我需要将结果对象转换为数组。我做到了:

let requests = Array(requestsFromRealm) 

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

+0

你不只是运行到https://realm.io/docs/swift/latest/#realm-object-setters-and-getters-cannot-be-overriden?所以如果你使用访问器,那么值就好了? – EpicPandaForce

+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 
    } 
} 
+0

我已经尝试过了,不幸的是它有相同的结果。 –

0
let requests = Array (requestsFromRealm) 

我认为有这个代码没有问题。

Realm对象的属性中不存在“动态”吗?

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