[英]Should I use repository for Realm(ios)
首先,我在ios中相对较新,没有任何使用移动dbs的经验。
想要集成到我的应用程序Realm(swift),并想知道将服务层和存储库分开或者所有内容都包含在服务中是否有意义。
一些例子有一个很好的观点。
class UserService {
var userRepository: UserRepository!
func findById(userId: String) -> User? {
return userRepository.findById(userId: userId)
}
}
class UserRepository {
private let realm = try! Realm()
func findById(userId: String) -> User? {
return realm.object(ofType: User.self, forPrimaryKey: userId)
}
}
在数据库API顶部添加抽象层非常常见。 许多其他开发人员已经将Realm包装在他们自己的类中,以便将API隐藏在他们的业务逻辑代码中。
需要注意几个方面的考虑因素:
只要您要移动的新数据库也包含管理对象(即核心数据),从一个数据库转换到另一个数据库通常不是很多工作。 因此,我建议在必要时避免不必要的工作。
免责声明:我为Realm工作,但这是我的观点,因为过去曾使用Core Data,原始SQLite和Realm发布个人应用程序。
您可以使用扩展来添加提取方法。 您可以为数据库中的每个实体添加Object子类,然后在需要时为这些方法添加扩展。 例:
import RealmSwift
// Dog model
class Dog: Object {
dynamic var name = ""
dynamic var owner: Person? // Properties can be optional
}
对于你的提取方法:
extension Dog {
class func fetch(with name: String) -> Dog? {
return try! Realm().objects(Dog.self).filter("name == %@", name).first
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.