RealmSwift: Convert Results to Swift Array

前端 未结 11 1818
[愿得一人]
[愿得一人] 2020-12-12 15:50

What I want to implement:

class func getSomeObject() -> [SomeObject]? {
    let objects = Realm().objects(SomeObject)

    return objects.count > 0 ? o         


        
11条回答
  •  失恋的感觉
    2020-12-12 16:39

    Swift 3

    extension Results {
        func toArray(ofType: T.Type) -> [T] {
            var array = [T]()
            for i in 0 ..< count {
                if let result = self[i] as? T {
                    array.append(result)
                }
            }
    
            return array
        }
    }
    

    Usage

    class func getSomeObject() -> [SomeObject]? {
       let defaultRealm = try! Realm()
        let objects = defaultRealm.objects(SomeObject.self).toArray(ofType : SomeObject.self) as [SomeObject]
    
        return objects.count > 0 ? objects : nil
    }
    

    Alternative : Using generics

    class func getSomeObject() -> [T]? {
            let objects = Realm().objects(T.self as! Object.Type).toArray(ofType : T.self) as [T]
    
            return objects.count > 0 ? objects : nil
    }
    

提交回复
热议问题