장치 모션 타임 스탬프 속성을 nslog로 지정하려고합니다.Nslog 타임 스탬프
장치 운동은 클래스 CMMotionManager.devicemotion.timestamp
어떤 아이디어입니다.
장치 모션 타임 스탬프 속성을 nslog로 지정하려고합니다.Nslog 타임 스탬프
장치 운동은 클래스 CMMotionManager.devicemotion.timestamp
어떤 아이디어입니다.
은 timestamp
속성은 NSTimeInterval
, 그래서 당신은 할 수 있어야한다 : 대신 %@
의 %f
를 사용하여 직접 로그인 할 수 있도록
NSLog(@"Motion at time: %@",
[NSDate dateWithTimeIntervalSinceReferenceDate:devicemotion.timestamp]);
NSTimeInterval
, 그냥 typedef되어 double
유형입니다.
또한이 타임 스탬프가 Apple의 참조 날짜 또는 표준 * nix 날짜에 대해 설정되어 있는지 여부를 나타내지 않으므로 앞에서 설명한 방법으로 먼 날짜가 반환되는 경우 [NSDate dateWithTimeIntervalSince1970:]
을 사용해야 할 수도 있습니다. @davidbitton가 CMDeviceMotion
의 timestamp
마지막 장치 부팅을 기준으로 제안 된 바와 같이
올바른 NSDate
를 가정하면, 이것은 대략 정확한 NSDate
객체를 생성한다
NSDate *startupTime = [NSDate dateWithTimeIntervalSinceNow:
-1 * [[NSProcessInfo processInfo] systemUptime]];
NSDate *deviceMotionDate = [NSDate dateWithTimeInterval:devicemotion.timestamp
sinceDate:startupTime];
의해 유도 될 수 @davidbitton 맞습니다 . (참조 : NSProcessInfo -systemUptime) 그러나
이 얼마나 복잡 주어, 나는 지금 단순함에 대한 제안, 당신이
"... event logged at %0.2f seconds since startup...", devicemotion.timestamp
장치 모션 샘플의 타임 스탬프가 장치를 마지막으로 부팅했을 때의 NSTimeInterval이기 때문에이 방법이 작동하지 않습니다. 2001 년 1 월 1 일이나 1970 년의 일반적인시기가 아닙니다. – davidbitton
@davidbitton + flaggers + downvoter : 'CMDeviceMotion.timestamp' 속성이'NSDate '인 경우 (회선?) 방식으로 업데이트됩니다. 가동 시간을 기준으로합니다. –
이것은 작동하지 않습니다. - [NSProcessInfo systemUptime]은 CPU가 잠든 동안 올바른 값을 제공하지 않습니다. –
timestamp
재산의 특성상
날짜는 Apple 설명서에 따라 나와 있기 때문에 여기에 넣은 해결책은 다음과 같습니다.
시간 스탬프는 전화 부팅 후 경과 된 시간입니다.
먼저 NSDate가 nil 인 경우 첫 번째 mesure에 originDate를 저장합니다. 나는이 같은 실제 일을 할 때
[self.motionManager startGyroUpdatesToQueue:self.queue withHandler:^(CMGyroData *gyroData, NSError *error) {
if (self.originDate == nil) {
self.originDate = [NSDate dateWithTimeIntervalSinceNow:-gyroData.timestamp];
}
}];
는 그럼 난 표시 할 수 있습니다
[NSDate dateWithTimeInterval:mygyroData.timestamp sinceDate:self.originDate]
일부 mesure를 다시 시작해야하는 경우 무기 호에 originDate를 다시 설정하는 것을 잊지 마십시오.
@ ben-mosher의 접근법에 대한 많은 변형을 시도한 후에이 방법이 가장 적합하다고 생각합니다. 구현하는 데에는 조금 더 고통 스럽지만 내부 구현 세부 사항은 [NSProcessInfo systemUptime]에 의존하지 않으므로보다 방어적인 솔루션입니다. –
타임 스탬프는 무엇을 의미합니까? –
CMMotionManager.devicemotion은 CMDeviceMotion 유형이며 해당 클래스에 타임 스탬프 속성이 없습니다? –
@Robin - CMLogItem에서'timestamp'를 상속받습니다. –