6์ถ ๋ฐ์ดํฐ(acc 3์ถ + gyro 3์ถ)๋ฅผ ๋ค๋ค๋ณด๋ ์ฑ
์ฐ๋กฑ์ฐจ | ์๋ฆฌ |
---|---|
- ํ์ผ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
- ๊ธฐ์ ์คํ
- ๊ธฐ๋ฅ ๋ฐ UI
- ์ค๊ณ ๋ฐ ๊ตฌํ
- ์คํ ํ๋ฉด
- ๊ธฐ์ ์ ๋์
- Truoble Shooting
- ๊ณ ๋ฏผํ๋ ์
GyroData
โโโ Resources
โ โโโ Assets.xcassets
โ โโโ Base.lproj
โโโ Sources
โโโ App
โโโ Extension
โ โโโ UI
โโโ Model
โโโ Presentation
โ โโโ Coordinators
โ โโโ MotionList
โ โ โโโ Coordinator
โ โ โโโ ViewControllers
โ โ โโโ ViewModels
โ โ โโโ Views
โ โโโ MotionMeasure
โ โ โโโ ViewControllers
โ โ โโโ ViewModels
โ โ โโโ Views
โ โโโ MotionPlay
โ โโโ ViewControllers
โ โโโ ViewModels
โโโ Utility
โโโ CoreDataStorage
โโโ MotionStorage
โโโ EntityMapping
- Swift/UIKit
- MVVM
- Coordinator
Observable
์ ๊ตฌํํ์ฌ ๋ทฐ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ- ViewModel์ View ๊ด๋ จ ํ์
์ Observer๋ฅผ ๋ฑ๋กํ ์ ์๋ ํ์
์ ๊ตฌํ
Observable
- ๋ฒํผ ํญ ์ด๋ฒคํธ ๊ฐ์ Input์ด ๋ค์ด์์ ๋ ์ ์ ํ Output์ ๋ด๋ณด๋ผ ์ ์๋๋ก ํจ
- block์๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋ ๋ง๋ค view๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์๋ ํจ์๋ฅผ ๋ฑ๋กํ๋ค.
- ViewModel ๋ณ๊ฒฝ์์๋ ํด๋น observer๊ฐ ์คํ๋์ด ๋ทฐ๋ ๊ทธ์ ๋ง๊ฒ ์ ๋ฐ์ดํธ ๋๋ค.
- CoreData
- FileManager
- CoreMotion
๊ธฐ๋ฅ/UI | ์ค๋ช |
---|---|
๋ชฉ๋ก | ์ธก์ ํ๊ธฐ ๊ธฐ๋ฅ์ ํตํด ๋ก์ปฌ์ ์ ์ฅ๋ Motion ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋ฆฌ์คํธ ํํ๋ก ๋ณด์ฌ์ค๋ค. |
์ธก์ | ์ธก์ ๋ฒํผ์ ํตํด Acc ํน์ Gyro ๋ชจ์ ์ ์ธก์ ํ์ฌ ์ค์๊ฐ์ผ๋ก ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ค๋ค. |
View | ๋ชฉ๋ก์์ ์ ์ ํฐ์นํ์ฌ ์ง์ ํ ์ ์๊ณ , ์ธก์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ํ ํํ๋ก ๋ณด์ฌ์ค๋ค. |
Play | ๋ชฉ๋ก์์ ์ ์ ์ค์์ดํํ์ฌ ์ง์ ํ ์ ์๊ณ , ์ธก์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ํ ํํ๋ก ๋ณด์ฌ์ค๋ค. ์ฌ์๋ฒํผ์ ํตํด ๊ทธ๋ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ทธ๋ ค์ฃผ๊ธฐ๋ ํ๋ค. |
class/struct | ์ญํ |
---|---|
AppCoordinator |
์ฑ์ ๋ฃจํธ. ์ฒซ ํ๋ฉด์ ์ค๋นํ๊ธฐ ์ํ ํ์ |
MotionListCoordinator |
๋ชฉ๋ก ํ๋ฉด์ ํ๋ฉด ์ ํ์ ๋ด๋นํ๋ ํ์ |
MotionListViewController |
๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ์ธก์ ํ๋ ๊ธฐ๋ก๋ค์ ๋ฆฌ์คํธ ํํ๋ก ๋ณด์ฌ์ค๋ค. |
MotionDetailViewController |
์ธก์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ํ ํํ๋ก ์์ธํ๊ฒ ๋ณด์ฌ์ค๋ค. ๋๊ฐ์ง ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด์๊ณ , View์ Play ๋ชจ๋๊ฐ ์๋ค. |
MeasurementViewController |
๋ชจ์ ์ ์ธก์ ํ ์ ์๋ ๋ฐ์ดํฐ๋ค. ์ธก์ ์ ๋ง์น๊ณ ๋๋ฉด ์ธก์ ํ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ๊ณผ ๊ธฐ๊ธฐ์ ๋ชจ๋ ์ ์ฅํ ์ ์๋ค. |
class/struct | ์ญํ |
---|---|
CoreDataMotionStorage |
๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ก์ปฌ์ ์ฅ์ ํ์ |
CoreMotionManager |
๋ชจ์ ์ ์ธก์ ํ ์ ์๋ ํ์ |
MotionFileManager |
์ธก์ ํ ๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์ญ์ , ๋ถ๋ฌ์ค๊ธฐ๋ฅผ ๋ด๋นํ๋ ํ์ |
Observable |
ViewModel์ ๊ฐ ๋ฐ์ดํฐ ํ์ ์ Observer ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ์ ๋ค๋ฆญ ํ์ |
๋ชฉ๋ก ํ๋ฉด
์ธก์ ํ๊ธฐ
์์ธ ํ๋ฉด
ํ๋ฉด ์ ํ์ ๋ํ ๋ก์ง์ ViewController๋ก๋ถํฐ ๋ถ๋ฆฌํ๊ณ ์์กด์ฑ ๊ฐ์ฒด์ ๋ํ ์ฃผ์ ์ ์ธ๋ถ์์ ์ฒ๋ฆฌํ๋๋ก ํ๊ธฐ ์ํด ์ฝ๋๋ค์ดํฐ๋ฅผ ์ ์ฉํ์ต๋๋ค.
์ฌ์ฉ์๋ก๋ถํฐ accelerometer(๊ฐ์๋๊ณ), gyroscope(์์ด๋ก) ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ์ฌ ์ฌ์ฉํ์์ต๋๋ค.
๋ฌธ์ ์ํฉ
์ผ๋ฐ์ ์ธ fetch๋ฅผ ํตํด ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ฒ ๋๋ฉด, ์ ์ฅ๋์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ค๊ฒ ๋๋ค. ํ์ง๋ง ์๊ตฌ์ฌํญ์ ๋ง์ถฐ 10๊ฐ์ ๋ฐ์ดํฐ๋ง ๋ถ๋ฌ์ค๊ณ ์ดํ ์ผ์ ์ด์ ์คํฌ๋กค์ ํ๊ฒ ๋๋ฉด ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ผํ๋ค.๊ณ ๋ฏผ
๊ทธ๋์ fetch๋ฅผ ํ ๋, ์กฐ๊ฑด์ ๋ฃ์ ์ ์๋์ง ์ฐพ์๋ณด์๋ค.ํด๊ฒฐ
์์๋ณด๋ fetch๋ฅผ ๋ณด๋ผ ๋ request๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ์ฌ fetch๋ฅผ ์งํํ๋๋ฐ, ์ด๋ request์ ์์ฑ์ ํ์ฉํ์ฌ ํน์ ๋ฐ์ดํฐ๋ง fetchํ ์ ์์๋ค.- ๊ทธ๋์ ์๋์ ๊ฐ์ด fetchLimit์ fetchOffset์ ํ์ฉํ์ฌ, ํ๋ผ๋ฏธํฐ๋ก page๊ฐ ๋ค์ด์์ ๋, ๊ณ์ฐํ์ฌ ํน์ ๋ฐ์ดํฐ๋ง ๋ถ๋ฌ์ฌ ์ ์๋๋ก ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ฃผ์๋ค.
request.fetchLimit = 10
request.fetchOffset = Int(page * 10) - 10
์์งํ ๋ฐ์ดํฐ๋ก๋ถํฐ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆด๋ ์์ง๋๋ ๊ฐ์ด ๋๋ฌด ์์ ์ผ์ ๋น์จ๋ก ์ฆํญ์์ผ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ธ์ต๋๋ค.
์ธก์ ํ๋ฉด์ด ๋ํ๋ ๋, ๋ค๋น๊ฒ์ด์ push ํํ๋ก ํ๋ฉด ์ ํ์ ํด๋ฌ๋ผ๋ ์๊ตฌ์ฌํญ์ด ์์์ต๋๋ค. ํ์ง๋ง ์ ํฌ ์๊ฐ์๋ ๋ค๋น๊ฒ์ด์ ์ด ์๋๋ผ ๋ชจ๋ฌ๋ก ๋์์ผํ๋๊ฒ ๋ง์ง ์๋ ์ถ์์ต๋๋ค. (ํด๋จผ ์ธํฐํ์ด์ค ๊ฐ์ด๋์ ๋ฐ๋ฅด์๋ฉด...?) ํน์๋ํด์ ํฌ๋ฃจ์๊ฒ ์ง๋ฌธํ๋๋ฐ, ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ๊ฐ๋ฐํด๋ฌ๋ผ๊ณ ํ์ ์ ๋ชจ๋ฌ๋ก ๊ตฌํํด๋์๋ ์ธก์ ํ๋ฉด์ ๋ค์ ๋ค๋น๊ฒ์ด์ ์ผ๋ก ์ฌ์์ ํ์์ต๋๋ค.
๋๊ฐ์ง ํด๊ฒฐ๋ฐฉ์์ ์๊ฐํ์์ต๋๋ค. ์ฒซ๋ฒ์งธ๋ ํ๋ฉด ๋น์จ์ ์ค์ด๋ ๋ฐฉ์, ๋๋ฒ์งธ๋ ์ต๋๊ฐ์ ๋์ด๊ฐ ๊ฐ์ ์ต๋๊ฐ์ผ๋ก ๊ทธ๋ฆฌ๋ ๋ฐฉ์. ์ฒซ๋ฒ์งธ ๋ฐฉ์์ ์๋ํ์๊ณ ํ๋ฉด๋น์จ์ ์ค์ด๋ ๋ฐฉ์์ ์ฑ๊ณตํ์์ผ๋ ์ค์ฌ์ง ํ๋ฉด๋น์จ์์ ์ขํ๋ฅผ ๋ค์ ๊ณ์ฐํ๋ ๋ฐฉ์์ด ๋ น๋ก์น์์ ๋๋ฒ์งธ ๋ฐฉ์์ ์ ํํ์์ต๋๋ค.
๋จผ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋๊ณณ์ด ๋๊ณณ์ ๋๋ค.(CoreData, FileManager) ์ด ๋๊ณณ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ต๋ํ ์ค๋ณต์ ํผํด์ ์ ์ฅํ๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋์ CoreData์๋ ์ฒซํ๋ฉด์ ํ์ํ ์ ๋ณด๋ฅผ ์์ฃผ๋ก ๊ตฌ์ฑํ์๊ณ FileManager์๋ ๊ทธ๋ํ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์์ต๋๋ค.