기본 정보
번핏 iOS앱에 등록되어 있는 운동 라이브러리 데이터를 애플워치앱에서 받아서 처리하기 위해서 사용되는 데이터입니다.
애플워치 앱의 경우 처음에 라이브러리 데이터를 들고 있지 않으며, 라이브러리 화면에 최초 진입 시 라이브러리를 불러와서 데이터를 저장하는 프로세스가 필요합니다.
애플워치 앱에서 불러오기 버튼을 눌러서 데이터 요청 → 요청 수신한 번핏 iOS앱에서 라이브러리 데이터 전송 → 애플워치 앱에서 데이터 수신 → 수신된 데이터를 기반으로 Realm 데이터 생성 및 저장 의 프로세스로 Realm에 데이터가 저장되는데, 이 때 수신된 데이터를 기반으로 Realm 데이터를 생성해서 저장하고 애플워치 앱에서 사용하기 위해서 ExerciseLibraryData 이라고 이름붙인 구조의 데이터를 사용하고 있습니다.
사용자가 데이터를 받고, 전송하는 과정에서 계속 삭제/재생성 되는 DayExerciseInformation 데이터와 달리 ExerciseLibraryData 는 한 번 데이터를 받아서 생성되면 유저가 명시적으로 다시 동기화 버튼을 눌러서 데이터를 불러오기 전까지는 계속 Realm DB에 저장되어 재사용됩니다.
데이터 명세
데이터 클래스 코드는 Realm/Models 폴더 내의 ExerciseLibraryData 파일에 작성되어 있습니다.
각 속성 별 구체적인 내용은 아래 상세 설명 부분에 기술되어 있습니다.
번핏앱에서 전송받는 데이터 예시
•
데이터의 속성에 대한 상세 설명
1. id
◦
타입: ObjectId
◦
설명: 생성된 객체의 고유 식별자입니다. Realm에서 자동으로 할당되는 값으로, 별도의 입력 없이 객체 생성 시 자동으로 생성됩니다.
◦
특징: @Persisted(primaryKey: true)로 선언되어 기본 키로 설정되며, 각 객체는 고유한 id 값을 가집니다.
2. favExIds: List<Int>
◦
타입: RealmSwift.List<Int>
◦
설명: 사용자가 즐겨찾기한 운동의 ID 목록입니다.
◦
특징: Realm에서 제공하는 List 타입으로 처리되어 있습니다. List 타입은 배열이라고 생각하면 되는데, Realm에서 Swift의 기본 Array 타입이 지원되지 않기 때문에 Realm에서 제공해주는 List 타입이 사용되었습니다.
3. exerciseBodyPart: List<ExerciseBodyPart>
◦
타입: RealmSwift.List<ExerciseBodyPart>
◦
설명: 하체, 등 과 같은 운동 부위 데이터 목록을 담기 위한 속성입니다. ExerciseBodyPart 라고 별도로 선언된 타입의 데이터 형식을 가지는 요소들의 List 입니다.
◦
특징: Realm에서 제공하는 List 타입으로 처리되어 있습니다. List 타입은 배열이라고 생각하면 되는데, Realm에서 Swift의 기본 Array 타입이 지원되지 않기 때문에 Realm에서 제공해주는 List 타입이 사용되었습니다.
4. localExercises: List<Exercise>
◦
타입: RealmSwift.List<Exercise>
◦
설명: 바벨 백스쿼트, 벤치프레스와 같은 실제 운동 데이터 목록을 담기 위한 속성입니다. Exercise 라고 별도로 선언된 타입의 데이터 형식을 가지는 요소들의 List 입니다.
◦
특징: Realm에서 제공하는 List 타입으로 처리되어 있습니다. List 타입은 배열이라고 생각하면 되는데, Realm에서 Swift의 기본 Array 타입이 지원되지 않기 때문에 Realm에서 제공해주는 List 타입이 사용되었습니다.
ExerciseLibraryData과 연계해서 함께 사용되는 데이터 2가지 - ExerciseBodyPart, Exercise
ExerciseLibraryData 를 구성하는 속성 중, exerciseBodyPart 속성은 별도로 선언한 ExerciseBodyPart 타입 데이터의 목록입니다. 그리고 localExercises 속성은 별도로 선언한 Exercise 타입 데이터의 목록입니다.
// 포함 구조를 간단하게 시각화하면 다음과 같습니다.
// (편의를 위해 다른 속성들은 표기하지 않았습니다.)
ExerciseLibraryData
└── exerciseBodyPart: List<ExerciseBodyPart> // ExerciseBodyPart타입 데이터의 배열
└── localExercises: List<SetData> // Exercise타입 데이터의 배열
JavaScript
복사
DayExercise 및 SetData 는 애플워치 앱에서 따로 구성한 데이터가 아니라, 번핏 iOS앱에서 전송된 운동부위 및 운동 별 데이터를 그대로 가져다 구성한 데이터입니다. ExerciseLibraryData 과 동일한 파일에 정의되어 있으며 각 데이터의 속성은 번핏 iOS앱에서 사용되는 데이터와 동일합니다.

