在Swift中获取RLMObject的通用方法

时间:2015-04-28 16:42:31

标签: ios swift realm

我想创建一个通用方法来从Realm数据库中获取对象模型。

问题是,调用方法的唯一方法.objectsWhere位于 Model Class (不是实例)中。

还有其他方法可以在模型实例中制作通用方法吗?

class DataBaseRepository {

// MARK: singleton declaration

class var sharedManager : DataBaseRepository {

    struct Singleton {

        static let instance = DataBaseRepository()

    }

    return Singleton.instance;

}// EndOf singleton declaration


let realm = RLMRealm.defaultRealm()


// MARK: - addRLMObject

// For addRLMObject it works !

func addRLMObject( r : RLMObject? ) {

    if let objectToAdd = r {

        realm.beginWriteTransaction()
        realm.addObject(objectToAdd)
        realm.commitWriteTransaction()

        return
    }

    println("Error addRLMObject \(r)")
}



// MARK: - getRLMObject

// This generate error : reason: 'Object type 'RLMObject' not persisted in Realm'

func getRLMObject( r : RLMObject? , reqString : String )-> RLMObject?{

    if let objectToget = RLMObject.objectsWhere(reqString).firstObject() as! RLMObject? {

        // I want to make a generic method to get RLMObject for all my methods
        // .objectsWhere is static method I can't call within instance

        return objectToget
    }

    return nil
}

}

1 个答案:

答案 0 :(得分:0)

您可以使用self.dynamicType.classMethod()来调用相应的类方法,因此在这种情况下它将是self.dynamicType.objectsWhere(reqString)