Я использую Realm, и это выглядит хорошо. Но я запутался здесь. Потому что я не понял, как работает Realm и какова его структура сохранения данных.
Я в основном разработчик Android, и вы можете сказать, что я новичок в iOS. Поэтому я подумал, что будет основной файл базы данных. а затем внутри него будут разные таблицы, а в таблицах я могу сохранять данные.
Но я очень удивлен, что я сохранил данные, но он не спросил у меня имя таблицы, и я действительно не знаю, как создать таблицу в ней. Как и в Java, мы сначала создаем таблицу, затем отражаем нашу модель в виде строки в этой таблице в базе данных. Я использую следующий файл для сохранения данных в области. Пожалуйста, взгляните и уберите следующие недоразумения
- скажите, как работает царство?
- как создается таблица в области?
- Как проверить, существует ли БД, я имею в виду, если данные уже сохранены?
- Как проверить, создана ли какая-либо таблица, скажем, (таблица страны), чтобы получить данные ??
и посмотрите следующий класс. Это в основном вспомогательный класс.
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)
}
}