@@ -9,59 +9,32 @@ import UIKit
9
9
import RealmSwift
10
10
11
11
class StopWatchDAO {
12
- let realm = try ! Realm ( )
12
+ private let realm = try ! Realm ( )
13
13
14
- /// 오늘의 데이터가 없을 때 오늘 데이터를 생성하는 함수
15
- func create( date: String ) {
16
- if let _ = self . realm. object ( ofType: DailyData . self, forPrimaryKey: date) {
17
- } else {
18
- try ! realm. write {
19
- let day = DailyData ( ) // 오늘 데이터 생성
20
- day. date = date
21
- day. totalGoalTime = 0
22
- day. totalTime = 0
23
- let totalSeg = realm. objects ( Segments . self)
24
-
25
- for seg in totalSeg {
26
- let object = SegmentData ( ) // 오늘 과목들 생성
27
- object. date = date
28
- object. goal = 0
29
- object. value = 0
30
- object. segment = seg
31
- realm. add ( object)
32
-
33
- day. dailySegment. append ( object) // 오늘 데이터에 오늘 과목들 넣기
34
- }
35
- realm. add ( day)
36
- }
37
- }
14
+ /// 특정 Date의 Object가 존재하는지 여부를 반환하는 메소드
15
+ func doesObjectExist< T: Object > ( type: T . Type , forDate: String ) -> Bool {
16
+ return self . realm. object ( ofType: T . self, forPrimaryKey: forDate) == nil ? false : true
38
17
}
39
18
40
- ///과목 추가 메소드
41
- func addSegment( row: Int , name: String , date: String ) {
42
-
43
- try ! realm. write {
44
- let segment = Segments ( ) // 과목리스트 추가
45
- segment. colorCode = row
46
- segment. name = name
47
-
48
- realm. add ( segment)
49
-
50
- if let dailyData = realm. object ( ofType: DailyData . self, forPrimaryKey: date) { // 오늘 데이터 불러오기
51
- let segmentData = SegmentData ( ) // 오늘의 과목에 추가
52
- segmentData. date = date
53
- segmentData. goal = 0
54
- segmentData. value = 0
55
- segmentData. segment = segment
56
-
57
- realm. add ( segmentData)
58
- dailyData. dailySegment. append ( segmentData) // 오늘 데이터에 추가한 과목 추가
19
+ func getObject< T: Object > ( _ type: T . Type ) -> Results < T > {
20
+ return self . realm. objects ( T . self)
21
+ }
22
+
23
+ /// 오늘의 데이터가 없을 때 오늘 데이터를 생성하는 함수
24
+ func createDailyData( _ forDate: String ) {
25
+ guard !self . doesObjectExist ( type: DailyData . self, forDate: forDate) else { return }
26
+
27
+ do {
28
+ try realm. write {
29
+ realm. add ( DailyData ( forDate) )
59
30
}
31
+ } catch {
32
+ print ( " Failed to create Object: \( error. localizedDescription) " )
60
33
}
61
34
}
62
35
63
36
/// date날짜 데이터 삭제
64
- func deleteDailyData( date: String ) {
37
+ func deleteDailyData( date: String ) {
65
38
// 해당 날짜에 빈 segmentData 가 있는지 확인
66
39
let blankSegmentData = self . realm. objects ( SegmentData . self) . where {
67
40
( $0. value == 0 ) && ( $0. goal == 0 ) && ( $0. toDoList. count == 0 ) && ( $0. date == date)
@@ -79,40 +52,54 @@ class StopWatchDAO {
79
52
}
80
53
}
81
54
82
- func checkSegmentData( date: String ) {
83
- let segmentData = self . realm. objects ( SegmentData . self) . where {
84
- $0. date == date
85
- }
86
- let segemnts = self . realm. objects ( Segments . self)
87
- guard let dailyData = self . realm. object ( ofType: DailyData . self, forPrimaryKey: date) else { return }
88
-
89
- for segment in segemnts {
90
- let isSeg = segmentData. contains { seg in seg. segment == segment }
91
- if isSeg == false {
92
- try ! self . realm. write {
93
- let object = SegmentData ( ) // 오늘 과목들 생성
94
- object. date = date
95
- object. goal = 0
96
- object. value = 0
97
- object. segment = segment
98
- realm. add ( object)
99
-
100
- dailyData. dailySegment. append ( object)
55
+ /// 과목 추가 메소드
56
+ func addSegment( _ colorRow: Int , name: String , forDate: String ) {
57
+ do {
58
+ try realm. write {
59
+ let segment = Segments ( name: name, colorCode: colorRow)
60
+ realm. add ( segment)
61
+
62
+ let dailyData = getObject ( DailyData . self)
63
+
64
+ for data in dailyData {
65
+ data. dailySegment. append ( SegmentData ( date: data. date, segment: segment) )
101
66
}
102
67
}
68
+ } catch {
69
+ print ( " Failed to add segment: \( error. localizedDescription) " )
103
70
}
104
71
}
72
+
73
+ // func checkSegmentData(date: String) {
74
+ // let segmentData = self.realm.objects(SegmentData.self).where {
75
+ // $0.date == date
76
+ // }
77
+ // let segemnts = self.realm.objects(Segments.self)
78
+ // guard let dailyData = self.realm.object(ofType: DailyData.self, forPrimaryKey: date) else { return }
79
+ //
80
+ // for segment in segemnts {
81
+ // let isSeg = segmentData.contains{ seg in seg.segment == segment }
82
+ // if isSeg == false {
83
+ // try! self.realm.write{
84
+ // let object = SegmentData() // 오늘 과목들 생성
85
+ // object.date = date
86
+ // object.goal = 0
87
+ // object.value = 0
88
+ // object.segment = segment
89
+ // realm.add(object)
90
+ //
91
+ // dailyData.dailySegment.append(object)
92
+ // }
93
+ // }
94
+ // }
95
+ // }
96
+
105
97
//MARK: - DailyData 편집(읽기)
106
98
/// DailyData 읽기
107
99
func getDailyData( _ date: String ) -> DailyData ? {
108
100
return self . realm. object ( ofType: DailyData . self, forPrimaryKey: date)
109
101
}
110
102
111
- func getDailyDatad( _ date: DateComponents ) -> DailyData ? {
112
- return self . realm. object ( ofType: DailyData . self, forPrimaryKey: date. stringFormat)
113
- }
114
-
115
-
116
103
/// 총 시간 읽기!
117
104
func getTotalTime( _ date: DateComponents ) -> TimeInterval {
118
105
guard let data = self . realm. object ( ofType: DailyData . self, forPrimaryKey: date. stringFormat) else { return 0 }
@@ -163,7 +150,7 @@ class StopWatchDAO {
163
150
from. toDoList. append ( list)
164
151
from. listCheckImageIndex. append ( 0 )
165
152
}
166
- } catch ( let error ) {
153
+ } catch {
167
154
print ( error. localizedDescription)
168
155
return false
169
156
}
@@ -177,7 +164,7 @@ class StopWatchDAO {
177
164
from. toDoList. append ( to. toDoList [ row] )
178
165
from. listCheckImageIndex. append ( 0 )
179
166
}
180
- } catch ( let error ) {
167
+ } catch {
181
168
print ( error. localizedDescription)
182
169
return false
183
170
}
@@ -187,7 +174,7 @@ class StopWatchDAO {
187
174
/// TodoList 수정
188
175
func editTodoList( _ segData: SegmentData , row: Int , text: String ) {
189
176
do {
190
- try self . realm. write {
177
+ try self . realm. write {
191
178
segData. toDoList [ row] = text
192
179
}
193
180
} catch let error {
@@ -237,7 +224,6 @@ class StopWatchDAO {
237
224
}
238
225
239
226
//MARK: - Segment
240
-
241
227
/// Segment 불러오기
242
228
func getSegment( _ row: Int ) -> Segments {
243
229
return self . realm. objects ( Segments . self) [ row]
0 commit comments