Mac Plus

Hello Swift

Realm

  • coredata, sqllite는 사용해본 경험이 있기 때문에 오늘은 realm을 이용하여 샘플 메모 앱을 만들어 볼 예정
  • cocoaPods에 pod ‘RealmSwift’을 해준다. 간단하게 테스트 후 class를 만들어준다.
  • realm에도 모델클래스를 만들어주도록 할게요(간단하게 제목, 내용, 날짜) ** realm을 시뮬레이터로 작업중에 모델클래스를 변경하게 되는 경우가 있을것이다. 이때 //Fatal error: ‘try!’ expression unexpectedly raised an error: Error Domain=io.realm Code=10 “Migration is required due to the following errors 이런 에러가 발생되는데 시뮬레이터에 설치되어있는 앱을 삭제하고 재실행 하던지, 실제 아이폰 기기로 작업을 진행하면 되겠다.
import RealmSwift

class Memo: Object {
    @objc dynamic var title = ""
    @objc dynamic var content = ""
    @objc dynamic var date = ""
}
import RealmSwift

class DB {
    static var shared = DB()
    var realm = try! Realm()
    
    func save(_ memo: Memo) {
        try! realm.write {
            realm.add(memo)
        }
    }
    
    func load() -> [Memo] {
        let data = realm.objects(Memo.self)
        return Array(data)
    }
    
    func delete() {
        do {
            try realm.write {
                realm.deleteAll()
            }
        } catch {
            print("\(error)")
        }
    }
    
}
  • ViewController에서 ```c //save let memo = Memo() memo.title = “Test” memo.content = “ContentTest” memo.date = “2020-05-13” try! realm.write { realm.add(memo) }

//load let data = realm.objects(Memo.self) print(data) //여기서 data는 Results타입인데 Array(data)해주면 [Memo]로 변경된다.

//delete (do try catch 형태로 해줘야 에러가 발생되지 않는다). 그냥 deleteAll()으로 하면 안됨 do { try realm.write { realm.deleteAll() } } catch { print(“(error)”) } ```