2017-04-24 2 views
0

그래서 저는 작업을위한 카운트 다운 타이머입니다. 그리고 앱에 기록 될 수 있도록 경과 된 시간을 저장하는 방법이 있는지 알고 싶습니다. 따라서 예를 들어 evertime에서는 카운트 다운 타이머를 사용하여 카운트 다운이 평생 가치로 실행되는 시간을 저장합니다. 십분 신속한 경과 시간 추적

  • 위한

    • 카운트 다운 타이머 세트는 4 분 타이머에 잔류 30 초 5 분 30 초 동안 실행.
    • 경과 세션 시간의 값은, (5 분 30 초)을 앱 저장 및 사용의 정확한 세트의 총 수명 값을 11 분으로 할 반복 한 경우, 총

    에 첨가 .

    누군가가 이러한 기능을 구현하는 방법을 설명하는 리소스 방향으로 나를 지적 할 수 있다면 크게 도움이 될 것입니다.

  • +1

    앱 실행을 통해 계속 유지 하시겠습니까? – brandonscript

    +0

    사용자가 배경 화면/앱 종료/장치 끄기를 할 때 "논리 시간"이 경과하는지 여부를 고려해야합니다. 그들이 * 경과 한 시간을 보장하지 않기 때문에 타이머에주의하십시오. 또한 사용자는 장치 시간 설정을 조정할 수 있습니다. –

    +0

    안녕하세요. brandonscript, 예, 앱 시작에이 기능을 계속 사용하겠습니다. – Trlewi

    답변

    0

    숫자를 그대로 유지하는 데 사용할 수있는 몇 가지 옵션이 있습니다. 가장 쉽고 빠르며 가장 빠른 방법은 숫자를 저장/검색하는 데 UserDefaults을 사용하는 것입니다. 정확히 UserDefaults의 의도 된 용도는 아니지만, 단지 TimeInterval을 저장하는 경우 아무런 문제가 발생하지 않습니다.

    let interval: TimeInterval = 20 //replace with the time from your countdown timer 
    UserDefaults.standard.set(interval, forKey: "totalTimeElapsed") 
    

    을 그리고 당신은 기존의 경과 시간에 새 시간을 추가 할 필요가 있기 때문에, 당신은 다음과 같이 할 것 :

    베어 뼈의 구현은 다음과 같을 것이다

    let newTimeElapsed: TimeInterval = 20 //replace with time from countdown timer 
    let totalSoFar = UserDefaults.standard.double(forKey: "totalTimeElapsed") //will be 0 if it doesn't exist 
    UserDefaults.standard.set(newTimeElapsed + totalSoFar, forKey: "totalTimeElapsed") 
    

    기타 당신이 이것을 할 수있는 표준 방법은 NSKeyedArchiver 또는 Core Data 일 것이지만, Core Data은 1의 숫자를 유지하기위한 주요 과잉이다.

    +0

    글쎄, 그것은 하나의 인스턴스가 아니라 애플 리케이션의 모든 미래의 인스턴스에 대해 발생하기를 계속할 것이라고. 사용자가 카운트 다운을 완료하지 않으면 어떻게됩니까? 나는 타이머 총계를 저장하고 싶지 않고, 실제로 작업을 완료하는 데 소비 한 시간 만이다. – Trlewi

    +0

    @Trlewi 예, 그것은 앱의 실행을 가로 질러 지속될 것이다. 타이머가 멈추었을 때 얼마나 많은 시간이 경과했는지를 결정해야하고, 나의 예제에서'newTimeElapsed' 대신에 그 숫자를 사용할 필요가 있습니다. 그것은 단지 자리 표시 자일뿐입니다. 보시다시피, 필자는 예제에서 이전 값과 매번 새로운 값으로 새 값을 설정했습니다. – creeperspeak