[英]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.