Trulyawesome
[Swift] Realm 사용방법 본문
오늘은 Realm을 사용해보았습니다. Realm은 모바일에 최적화된 데이터베이스입니다. 서버를 따로 구축할 필요없이 손쉽게 데이터베이스를 사용할 수 있다는 장점이 있습니다.
RealmSwift 설치
cocoapod을 이용하여 설치합니다.
- 해당 프로젝트 디렉토리로 이동 후
pod init
을 하여podfile
을 생성해줍니다. podfile
에서pod 'RealmSwift'
를 추가해줍니다pod install
명령어로 설치해줍시다- 설치를 완료한 후 해당 프로젝트 소스에
import RealmSwift
를 해주시면 됩니다.
Model 설정
1
2
3
4
5
6
7
8
9
10
11
|
@objcMembers class Portfolio: Object {
dynamic var stockName: String = ""
dynamic var category: String = ""
dynamic var amount: Int = 0
dynamic var price: Int = 0
dynamic var rate: Double = 0.0
dynamic var isProfit: Bool = false
dynamic var profitRate: Double = 0.0
dynamic var date: Date = Date()
}
|
cs |
위와 같이 설정합니다. realm은 Object타입을 사용합니다. 그리고 각 변수 앞에 dynamic을 선언해주어야 합니다.
1
2
3
4
5
6
7
8
9
10
11
|
class Portfolio: Object {
@objc dynamic var stockName: String = ""
@objc dynamic var category: String = ""
@objc dynamic var amount: Int = 0
@objc dynamic var price: Int = 0
@objc dynamic var rate: Double = 0.0
@objc dynamic var isProfit: Bool = false
@objc dynamic var profitRate: Double = 0.0
@objc dynamic var date: Date = Date()
}
|
cs |
이렇게 설정해주어도 됩니다.😄
데이터 다루기
전체소스
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
class RealmManager {
private init() {}
static let shared = RealmManager()
var realm = try! Realm()
func creat<T: Object>(_ object: T) {
do {
try realm.write {
realm.add(object)
}
} catch {
print(error)
}
}
func update<T: Object>(_ object: T, with dictionary: [String: Any?]) {
do {
try realm.write {
for(key, value) in dictionary {
object.setValue(value, forKey: key)
}
}
} catch {
print(error)
}
}
func delete<T: Object>(_ object: T) {
do {
try realm.write {
realm.delete(object)
}
} catch {
print(error)
}
}
func reset() {
do {
try realm.write {
realm.deleteAll()
}
} catch {
print(error)
}
}
}
|
cs |
저는 singleton으로 구현하였습니다. Youtube에서 배워서 아주 유용하게 쓰고있습니다.🔥
설명
1
|
var realm = try! Realm()
|
cs |
먼저 이렇게 realm 변수를 선언해줍니다. 이제 이 선언한 realm에서 데이터 추가, 삭제 등의 데이터 핸들링이 이루어 집니다.
- 데이터 쓰기
1
2
3
|
try realm.write {
realm.add(object)
}
|
cs |
- 데이터 삭제
1
2
3
|
try realm.write {
realm.delete(object)
}
|
cs |
위와 같이 realm.write로 데이터관리가 가능합니다 .
나머지는 위에있는 풀소스를 보시면 됩니다.😁
- 저장된 데이터 불러오기
1
2
3
4
|
override func viewDidLoad() {
super.viewDidLoad()
portfolio = realm.objects(Portfolio.self)
}
|
cs |
realm.objects(모델의 타입.self)으로 데이터를 불러올 수 있습니다.
'프로그래밍 > iOS' 카테고리의 다른 글
[Swift] Protocol (0) | 2020.09.24 |
---|---|
[Swift] xib customView 사용하기 (0) | 2020.08.15 |
Swift Delegate Data Pass (VC간의 데이터 전달) (0) | 2020.07.31 |
UITextField에서 클릭시 DatePicker 나오게 구현하기 (0) | 2020.07.29 |
[IOS] collectionView no data view 만들기 (swift) (0) | 2020.07.16 |