조깅을하고 코어 데이터를 사용하여 정보를 저장하는 경우 기록되는 응용 프로그램을 만들고 싶습니다. 나는 각 운동을 날짜, 거리 및 시간으로 저장하고 싶다. 또한 실행 한 총 시간과 총 거리를 포함하는 요약을 표시 할 수 있어야합니다.KVO를 사용하여 속성을 업데이트하는 방법
내 disign에서 나는 Workout 개체에서 직접 요약을 표시 할 수 있습니다. 내가 얼마나 많은 시간을 뛰었 는가는 운동 목표의 양에 불과하며, 각 운동에서 거리를 합산하여 총 거리를 구할 수 있습니다. 그러나 두 번째 작업은 너무 많은 비용이 드는 것으로 생각합니다. 데이터를 표시 할 때마다 전체 데이터베이스를 스캔해야하기 때문입니다 (iTunes에서와 동일한 문제로 음악의 총 시간을 표시하고 싶습니다. 장치). 나는 앱이 점심을 먹을 때마다이 정보를 속성에 저장할 수 있지만 느린 시작을 초래할 것이라고 생각합니다. 그 때문에, 나는 오히려 2 coredata 개체가 있다고 생각 요약 및 운동 :
+---------------------+ +---------------------+
|Summary | |Workout |
+---------------------+ +---------------------+
|totalDistance | <--------------->> |date |
|totalAmountOfWorkouts| |distance |
+---------------------+ |time |
+---------------------+
여기에 질문이 온다. 요약을 어떻게 업데이트해야합니까?
totalDistance 및 totalAmountOfWorkouts를 수동으로 업데이트 할 수 있습니다. 새로운 Workout을 만들 때마다 트리거되는 updateWorkout 메서드를 구현한다고 상상해보십시오. 그러나 나는 Coredata가 이미 관측 기능을 가지고 있고 새로운 Workout 객체가 삽입되었을 때 나에게 KVO를 업데이트 할 수 있다고 알려줄 수 있습니다. 나는 KVO를 사용한 적이 없으며 이것이 KVO를 사용하는 올바른 사례인지 궁금합니다. 그러나 어떻게 그 일을합니까? 실제로 KVO가이 문제를 해결하기위한 최선의 방법입니까 아니면 오히려 Workout에 프로토콜을 구현하고 요약을 대리인으로 지정해야합니까? 저는 KVO 패턴을 디버깅하기가 어렵다는 말을 들으면서 막연하게 기억합니다.
요약하기, 내 질문은 :
Q1 : 나는 totalDistance 직접 DB를 스캔 나갈까요?
Q2 : KVO 또는 대리인 패턴을 사용해야합니까?
Q3 : totalDistance는 어떻게 업데이트됩니까?
에서 예? – Alvaro
CoreData에서 모든 트랙 정보를 가지고 있다면 확실히 시도 할 것입니다! –
대신 @ sum.distance 트릭을 사용하십시오. 각 Workout.distance 값을 반복했습니다. – Alvaro