티스토리 뷰

Mobile/iOS

swift. RealmSwift 이용하여 봅시다.

out of coding 2021. 4. 3. 22:19

프로젝트를 생성하고 pod을 가져와서 사용하는 방법까지는 설명하지 않도록 할게요.

대신에 이 곳에 설명이 아주 잘되어 있으므로 참고해봅시다.

 

docs.mongodb.com/realm-legacy/docs/swift/latest/

 

Realm: Create reactive mobile apps in a fraction of the time

Oops something went wrong You will not be receiving an email shortly with details

docs.mongodb.com

그리고 사용 방법은 간단합니다.

 

이 기능을 사용하여야 하는 파일의 상단에 import를 추가합니다.

import RealmSwift

보기 편하게 저는 write와 read를 만들거에요.

private func write() {
    guard let realm = try? Realm() else { return }

    let person = Person()
    person.name = "outofcoding"
    person.address = "Korea"

    try? realm.write {
        realm.add(person)
    }
}

이렇게 하면 넣고 싶은 데이터를 넣습니다. 이게 끝입니다. ㅎㅎ

그럼 read도 넣어 볼게요.

private func read() {
    guard let realm = try? Realm() else { return }

    let models = realm.objects(Person.self)
    for model in models {
        print(model.name, model.address)
    }
}

이 예제는 간단하게 들어간 값들을 다 불러오는 것입니다.

조건문을 붙여서 가져와서 사용하는 방법도 있는데 위에 적어드린 Realm 주소에 가서 document를 참조하시면 많은걸 얻으실수 있을거에요.

 

그럼 전체 내용은 어떨까요?

import UIKit
import RealmSwift

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        write()
        read()
    }
    
    private func write() {
        guard let realm = try? Realm() else { return }
        
        let person = Person()
        person.name = "outofcoding"
        person.address = "Korea"
        
        try? realm.write {
            realm.add(person)
        }
    }
    
    private func read() {
        guard let realm = try? Realm() else { return }
        
        let models = realm.objects(Person.self)
        for model in models {
            print(model.name, model.address)
        }
    }
}

@objcMembers
class Person: Object {
    dynamic var name = ""
    dynamic var address = ""
}

 

이것에서 취향적으로 다를게 있기는 합니다.

Person class를 만드는 방법인데요. Realm은 변수 자체가 @objc dynamic 이어야 합니다.

이것은 dynamic dispatch 관련된 부분으로 접근해서 값을 가져오게 만드는것이라 다른 글에서 참조 바라고요.

class Person: Object {
    @objc dynamic var name = ""
    @objc dynamic var address = ""
}

 

때에 따라서는 위와 같이 @objc를 바로 붙여서 사용하여도 됩니다.

한번에 다 objcMember로 만들고 싶다면 class 자체를 @objcMembers로 넣어도 되고요.

 

예제는 프로젝트로 올려두었습니다.

github에서 받아서 하시면 되고요. pod install 하고 실행하시길 바랍니다.

 

github.com/outofcode-example/iOS-RealmDemo

 

outofcode-example/iOS-RealmDemo

Contribute to outofcode-example/iOS-RealmDemo development by creating an account on GitHub.

github.com

 

'Mobile > iOS' 카테고리의 다른 글

iOS - Swift. Property Wrappers  (0) 2023.02.06
iOS. UICollectionView로 Header만들고 Stretch 동작하도록 만들기  (0) 2021.05.16
Swift. Method Swizzle.  (0) 2021.01.03
Swift. @dynamicMemberLookup  (0) 2021.01.03
RxSwift, RxCocoa. Publish  (0) 2021.01.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함