티스토리 뷰
프로젝트를 생성하고 pod을 가져와서 사용하는 방법까지는 설명하지 않도록 할게요.
대신에 이 곳에 설명이 아주 잘되어 있으므로 참고해봅시다.
docs.mongodb.com/realm-legacy/docs/swift/latest/
그리고 사용 방법은 간단합니다.
이 기능을 사용하여야 하는 파일의 상단에 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
'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
- Windows
- ubuntu
- github
- Java
- golang
- Linux
- enum
- SWIFT
- nodejs
- centos8
- Xcode
- git
- intellij
- tomcat
- php
- docker
- go
- rxswift
- Codable
- MySQL
- android
- Gradle
- windows10
- cocoapods
- Kotlin
- CentOS
- Python
- Spring
- war
- ios
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |