프로젝트를 진행하다가 발견된 문제로 일단 기록에 남기기 위해 급하게 써봅니다.
진행 중인 프로젝트에서 DATE를 받아서 처리하는 부분이 꽤 많은데 서버에서 넘겨받은 DATE 문자열이 “2012-10-31T18:00+09:00“이라고 했을 때
이 포맷은 ISO8601에도 명시되어 있는 포맷이 맞음에도 불구하고 붉은색 문자의 처리가 iOS5와 iOS6에서 다름을 알게 되었습니다.
즉, NSDateFormatter를 이용하여 date format을 정의할 때
iOS6에서는 ‘yyyy-MM-dd’T’HH:mmZZZZ’ 으로 정의하면 제대로 파싱이 되지만,
iOS5에서는 (null)로 처리되는 문제가 있었습니다.
iOS5에서 따로 처리를 해주는 것이 있는지는 조사를 좀 더 해봐야 알 수 있겠지만 현재로서는 이 문제 하나 때문에 critical bug가 되어버린 상황이네요…
급한대로 마지막 ZZZZ에서의 세미콜론이 있으면 세미콜론을 무시하는 코드로 적용했지만 꺼림직한 것은 사실이네요.
추후 부가정보를 찾아보고 포스팅을 업데이트 하겠습니다.
혹여 이에 대한 정보를 가지고 계신 분 계시다면 댓글로 가르침 부탁드립니다.
2 comments
datefromstring 함수도 iso5와 ios6에서 차이가 있는거 같더군요.
유니코드 버전을 ios6에서는 tr35-25로, ios5에서는 tr35-19를 사용해서 그렇다고 하던데…전 잘 모르겠네요.
저도 꼼수로 풀고 있습니다.
유니코드 버전보다는 ISO8601 스펙을 더 타이트하게 적용한게 아닐까 의심해보고 있어요. ㅎ
상황 닥치지 않으면 크리티컬한 이슈는 아니니.. 하지만 이 문제 때문에 괜히 string 처리한 것도 괜히 찝찝하긴 하네요 🙂
방법 없을 때는 꼼수가 최고죠 ㅋ