1. podfile에 두개를 추가해주고, pod upate를 합니다.
pod 'Realm'
pod 'RealmSwift'
2. 그리고 저장하려는 데이터의 타입에 맞춰 모델을 선언해 줍니다.
import RealmSwift
class GoalInfoModel: Object {
@objc dynamic var goalWeight: Double = 0
}
3. 그리고 이제 저장과 꺼내기, 업데이트를 관리할 클래스를 생성합니다.
RealmSwift를 임포트 하고
realmInstance를 아래처럼 선언합니다.
그리고 저장은 add를 통해서 하고, 꺼내는 것은 objects를 통해 할 수 있습니다. 이때 원리는 해당 오브젝트 타입으로 저장된 모든 객체들이 꺼내지므로, first를 통해 그중에 가장 먼저 저장된 것을 꺼내는 방식입니다.
그리고 update는 기존의 저장된 것에 덮어씌우기 위해 기존것을 지우고 새로 저장하도록 한 메소드입니다.
import RealmSwift
class RealmManager {
let realmInstance = try! Realm()
private func saveGoalInfoModelToRealm(data: GoalInfoModel) {
let model = GoalInfoModel()
model.goalWeight = data.goalWeight
try! realmInstance.safeWrite {
realmInstance.add(model)
}
}
func getGoalInfoModelToRealm() -> GoalInfoModel? {
if let realmInfo = realmInstance.objects(GoalInfoModel.self).first {
return realmInfo
}
return nil
}
func updateGoalInfoModelToRealm(data: GoalInfoModel) {
if let realmInfo = realmInstance.objects(GoalInfoModel.self).first {
try! realmInstance.safeWrite {
realmInstance.delete(realmInfo)
self.saveGoalInfoModelToRealm(data: data)
}
} else {
self.saveGoalInfoModelToRealm(data: data)
}
}
}
데이터를 꺼낼때 filter를 이용하여 원하는 조건의 데이터를 꺼낼 수도 있습니다.
import RealmSwift
class RealmManager {
let realmInstance = try! Realm()
func getGoalInfoModelToRealm() -> GoalInfoModel? {
if let realmInfo = realmInstance.objects(GoalInfoModel.self).filter({
return $0 > 10
}) {
return realmInfo
}
return nil
}
}
'ios개발' 카테고리의 다른 글
swift xcode custom font 추가하기, 원하는 폰트 찾는 방법. (0) | 2021.08.09 |
---|---|
swiftUI - 글자 위치 높이 조절하기, baselineOffset (0) | 2021.08.09 |
Swift - Getters and Setters 스위프트 get, set (0) | 2021.07.24 |
Swift - Access Control, 스위프트 제한자(open, public, internal, fileprivate, private) (0) | 2021.07.24 |
<ios개발> swift 애니메이션 - 라벨 흔들기 (0) | 2021.06.20 |