FluidTrack / MOA_garden

Fluid Track Unity Application
MIT License
0 stars 0 forks source link

[BUG] 모아보기 버그!!! #89

Closed junhyungmoon closed 3 years ago

junhyungmoon commented 3 years ago

미국 박사님들께 APK 보내드리려다가 혹시 테스트를 해봤는데 큰일날뻔 했네요ㅜ 모아보기에서 데이터를 읽어오지 못하는 것처럼 보입니다.

Screenshot_20210825-161539_MOA GARDEN Screenshot_20210825-161548_MOA GARDEN

junhyungmoon commented 3 years ago

새 버전을 설치하기 전까지의 기록이 반영이 안되는듯 합니다. 새버전 설치후의 기록은 모아보기에 나와요

junhyungmoon commented 3 years ago

놀랍게도 새버전 설치후의 기록도 앱을 아예 껐다가 다시 접속하면 반영이 안된채로 0으로 표기됩니다ㅜ

KimYC1223 commented 3 years ago

문제 해결

모아정원에선 시간을 저장하는 자료형으로

stringTimeHandler의 내부 클래스 DateTimeStamp를 사용합니다.

두 시간을 비교 할 때, stringstring, 또는 DateTimeStampDateTimStamp

서로 비교하는 연산자가 있어 쉽게 비교가 가능하지만,

stringDateTimeStamp를 비교할 땐 한 쪽을 다른 한쪽으로 바꿔줘야 합니다.

DateTimeStampToString()또는 ToDateString()함수로 string으로 바꿀 수 있고,

stringnew DateTimeStamp(string str)과 같은 생성자로 DateTimeStamp로 바꿀 수 있습니다.


여기서 문제가 되는 부분은, 모아 정원내에서 stringDateTimeStamp를 비교하기 위해

DateTimeStampstring으로 바꾸는 과정입니다.

기존의 ToString(), ToDateString()함수는 아래와 같습니다.

override public string ToString() {
    return Years + "-" + Months + "-" + Days + " " +
               Hours + ":" + Minutes + ":" + Seconds;
}

public string ToDateString() {
    return Years + "-" + Months + "-" + Days;
}

보면 단순히 int형 변수들을 string으로 묶고 있기 때문에,

2021년 8월 25일의 ToDateString()결과는 2021-8-25입니다.

하지만 DB에서 전달되는 string은 #85 [Question] 데이터 timestamp sorting 이슈 에서 변경되어

2021-08-25으로 읽히기 때문에,

string이 다르다고 판단, 결과값이 하나도 없다고 판단하는 현상입니다.


해결 코드

해결하기 위해 ToString()ToDateString()을 #85 와 같이 고쳐두었습니다.

override public string ToString() {
    return Years + "-" + (Months/10) + (Months%10) + "-" + (Days/10) + (Days%10) + " " +
            (Hours/10) + (Hours%10) + ":" + (Minutes/10) + (Minutes%10) + ":" + (Seconds/10) + ( Seconds % 10 );
}

public string ToDateString() {
    return Years + "-" + ( Months / 10 ) + ( Months % 10 ) + "-" + ( Days / 10 ) + ( Days % 10 );
}

image