目前我正在使用这个:
var matchedUsersFromRealm = MatchedUser.allObjects()
var matchedUsersInRealm = RLMArray(objectClassName: MatchedUser.className())
matchedUsersInRealm.removeAllObjects()
matchedUsersInRealm.addObjects(matchedUsersFromRealm)
Run Code Online (Sandbox Code Playgroud)
但它看起来很麻烦,而不仅仅是它应该(或做到了?).也许有更好的方法?
PS,我正在研究混合项目,不知怎的,我只能使用Objective-C版本并将其桥接到我的快速项目中.所以Realm().objects()不可用,即使它返回的结果不是数组.
Ixx*_*Ixx 22
您可以添加以下扩展程序:
import Foundation
import RealmSwift
extension Results {
func toArray() -> [T] {
return self.map{$0}
}
}
extension RealmSwift.List {
func toArray() -> [T] {
return self.map{$0}
}
}
Run Code Online (Sandbox Code Playgroud)
然后取出时:
do {
let realm = try Realm()
let objs = realm.objects(MyObjType).toArray()
// ...
} catch _ {
// ...
}
Run Code Online (Sandbox Code Playgroud)
(如果你使用的是Swift pre-2.0,请删除do try catch)
请注意,这会立即将所有内容加载到内存中,在某些情况下可能不需要.如果您在后台获取,则需要它,因为Realm当前不支持在主线程中使用对象(在这种情况下,您还必须将数组映射到非Realm对象).
我更喜欢添加一个帮助类来使用泛型保存和检索任何类型的对象。
class RealmHelper {
static func saveObject<T:Object>(object: T) {
let realm = try! Realm()
try! realm.write {
realm.add(object)
}
}
static func getObjects<T:Object>()->[T] {
let realm = try! Realm()
let realmResults = realm.objects(T.self)
return Array(realmResults)
}
static func getObjects<T:Object>(filter:String)->[T] {
let realm = try! Realm()
let realmResults = realm.objects(T.self).filter(filter)
return Array(realmResults)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14607 次 |
| 最近记录: |