2016-10-03 3 views
1

에 충돌이 발생 배열을 정렬합니다 :는 I 배열이 다른 날짜를 기억이 장치

self.Ordered_Dates_Array = self.Dates_Array.sort { ($0).StringToDate.compare(($1).StringToDate) == .OrderedAscending} 

시뮬레이터에서이 코드는 모두 예상대로 작동합니다. 나는 장치에 응용 프로그램 충돌을 실행하지만, 여기에 오류 메시지의 이미지입니다 :

내가 예상대로 배열의 모든 작품 정렬 코드를 주석 처리합니다. 그렇다면 내 앱이 시뮬레이터가 아닌 기기에서 충돌을 일으키는 이유는 무엇입니까?

편집 :

이 Dates_Array는 모습입니다 같은 :

[ "2016년 12월 24일", "2016년 9월 14일", "2016년 9월 19일", "2016년 11월 19일 "]

내 장치 시간대는 런던입니다. 언어 = 영어 및 달력 = 그레고리오 어. 와

+0

nil, 어딘가에 없으므로 한 줄씩 이동하여 –

+1

문자열 중 하나 이상을 날짜 포맷터를 사용하여 날짜로 변환 할 수 없습니다. BTW - 'dateStyle'은 모든 로케일마다 다르며 사용자가 설정 앱에서 설정 한 사항을 기반으로하기 때문에 이러한 접근 방식은 거의 작동하지 않습니다. – rmaddy

+0

그렇다면 하나 이상의 문자열을 날짜로 변환 할 수없는 이유는 무엇입니까? 이것이 시뮬레이터에서 작동하지만 장치에서는 작동하지 않는 이유는 무엇입니까? 그리고 모든 날짜가 긴 스타일이라면 여전히 작동해야합니까? –

답변

0

문제는 미국에서 작성한 날짜가 있지만 내 장치의 지역이 다른 날짜 스타일이있는 영국으로 설정되어 있다는 것입니다. 도와 주셔서 감사합니다 @rmaddy.

1

교체 return (df.dateFromString(self))! :

if let dateString = df.dateFromString(self) { 
    return dateString 
} else { 
    //Handle situations where the string can't be formatted as date 
    return "Can't convert to date" 
} 

이제 당신은 변환 할 수없는 문자열을 알 수 있습니다.

+0

외관상으로는 그 (것)들의 아무도는 개조 될 수 없다, 그러나 그들은 시뮬레이터에서 할 수 있었다. –