【发布时间】:2018-08-30 12:53:34
【问题描述】:
我正在使用 Realm,它看起来不错。但我在这里感到困惑。因为我不知道 Realm 是如何工作的,以及它保存数据的结构是什么。
我基本上是一名 Android 开发人员,你可以说我是 iOS 的新手。所以在我的脑海里我在想会有一个数据库的主文件。然后在里面,会有不同的表,在表中我可以保存数据。
但我很惊讶我保存了数据,但它没有问我表名,我真的不知道如何在其中创建表。在 Java 中,我们首先创建表,然后将模型反映为数据库中该表中的行。我正在使用以下文件将数据保存在 Realm 中。请查看并清除以下混淆
- 告诉我领域是如何工作的?
- 如何在领域中创建表?
- 如何检查数据库是否存在我的意思是数据是否已经保存?
- 如何检查是否已经创建了任何表(国家表)以便检索数据?
并查看以下课程。它基本上是一个助手类。
public class DbHelper {
private init() {}
static let sharedDbHelper = DbHelper()
var realmObj = try! Realm()
/**
Generic function to create Object in the DB
*/
func save <T: Object> (_ obj : T){
do {
try realmObj.write {
realmObj.add(obj)
}
}catch{
print("DbHelperException","Create",error)
}
}
/**
Generic function to update Object in the DB
*/
func update <T: Object> (_ obj : T, with dictionary: [String : Any?]){
do{
try realmObj.write {
for (key,value) in dictionary{
obj.setValue(value, forKey: key)
}
}
}catch {
print("DbHelperException","Update",error)
}
}
/**
Generic function to delete Object in the DB
*/
func delete <T: Object> (_ obj : T){
do {
try realmObj.write {
realmObj.delete(obj)
}
}catch {
print("DbHelperException","Delete",error)
}
}
/**
Function to manage the error and post it
*/
func postDbError(_ error : Error) {
NotificationCenter.default.post(name: NSNotification.Name(""), object: error)
}
/**
Function to observe the error and post it
*/
func observeDbErrors(in Vc: UIViewController, completion: @escaping (Error?) -> Void) {
NotificationCenter.default.addObserver(forName: NSNotification.Name(""), object: nil, queue: nil) { (notification) in
completion(notification.object as? Error)
}
}
/**
Function to remove observer of the error
*/
func stopDbErrorObserver (in Vc: UIViewController ){
NotificationCenter.default.removeObserver(Vc, name: Notification.Name(""), object: nil)
}
}
【问题讨论】: