이번에는 Realm의 기본적인 부분인 Create Read Update Delete를 다뤄보려 합니다.
- Create : 새 object 추가.
realm.add(추가할 object)
- Read : object 가져오기
realm.object(가져올 object 이름)
- Update : object를 업데이트 한다.
realm.write
- Delete : 해당 object 삭제
realm.delete(삭제할 object)
설명하면서 개발하면서 빠질 수 없는 커피를 정의해볼거에요.
// Coffee.swift
import RealmSwift
// 1. Realm을 초기화합니다.
let realm = try! Realm()
// 2. 우리가 만들 오브젝트를 정의합니다.
// Coffee이라는 오브젝트를 만들것이고, 커피이름이 담길 name 프로퍼티를 생성합니다.
class Coffee: Object {
@objc dynamic var name: String = ""
@objc dynamic var ice: Bool = true
// 예전에는 @objc dynamic 으로 정의했었지만 이제 @Persisted 로 정의합니다.
}
위에서 정의한 dynamic var
는 동적 변수로서 앱이 실행되고 있을 때 변경사항을 모니터링 할 수 있습니다.
// MyCoffee.swift
import RealmSwift
class MyCoffee {
let realm = try! Realm()
// 2. Coffee를 만들고 저장도 해야겠죠?
// 아니라면 데이터는 DB에 저장되지 않을거에요.
// saveData 메소드를 만들어 줍니다. Coffee 유형을 받아서 저장할거에요.
func saveData(object: Coffee) {
// do-catch 문으로 실패시 오류를 잡을거에요.
do {
// 이 부분이 Object를 저장하는 부분입니다.
//
try realm.write({ // write : Update
realm.add(object) // add : Create
})
} catch {
// 실패시 오류를 출력합니다.
print("Save ERROR : \(error)")
}
}
// 3. 여기서 Coffee 타입 오브젝트를 초기화 하고 저장할거에요.
// 따뜻한 아메리카노를 정의해봅시다.
let text = "따뜻한 아메리카노"
// Object 초기화
let myCoffee = Item()
myCoffee.name = text
myCoffee.ice = false
// 초기화한 Object 저장하기.
saveData(object: myCoffee)
// 4. 자 이제 우리가 정의한 커피를 불러와봅시다.
// Results는 쿼리를 통해 반환된 개체를 자동업데이트하는 컨테이너. 여기에 배열이 담깁니다.
var coffeeList: Results<Coffee>?
// 불러온 Object를 Array에 담아주면 coffeeList를 참조하여
// 저장된 커피를 가져올 수 있습니다!
func loadData() {
coffeeList = realm.objects(Coffee.self)
}
반응형
'개발 > Swift' 카테고리의 다른 글
[Swift/Realm] List-LinkingObject 로 관계 설정한 데이터 Read, Create, Update 하기. (0) | 2022.06.26 |
---|---|
[Swift] CoreData Request에 이중필터 적용하기 (NSCompoundPredicate) (0) | 2022.06.24 |
[Swift] 서치바 검색한 데이터만 불러오기 (CoreData) (0) | 2022.06.24 |
[Swift] Coredata 데이터 다루기(저장, 삭제, 불러오기) (0) | 2022.06.24 |
[Framework] AVFoundation의 간단한 설명 (0) | 2022.05.24 |